Sngine Messenger Documentation
This document explains the real setup flow for the Messenger Flutter app before delivery or production release. It covers Flutter installation, server upload, Messenger addon activation, package name changes, app branding, license activation, deep links, Timeline integration, Agora calls, and Messenger app settings.
The instructions below are based on the current project files and Messenger addon structure, so buyers can follow them directly without searching through the source code.
1. Requirements
At the time this document was updated on April 25, 2026, the latest stable versions shown in the official sources were:
| Tool | Stable Version | Notes |
|---|---|---|
| Flutter | 3.41.5 |
Use stable Flutter only for production delivery. |
| Xcode | 26.4.1 |
Required for iOS builds on macOS. |
| Android Studio | Panda 4 | 2025.3.4 |
Required for Android SDK and emulator tools. |
2. Install Flutter
- Download Flutter SDK from the official Flutter website.
- Extract it to a fixed location such as
/Users/yourname/development/flutter. - Add
flutter/binto your systemPATH. - Run
flutter doctor. - Complete any missing dependencies reported by Flutter Doctor.
flutter --version
flutter doctor
flutter doctor -v
flutter doctor shows a clean setup for the platforms you want to support.
3. Xcode and Android Studio
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
- Xcode is required if you want to build the iOS app.
- Android Studio is required for Android SDK and release tooling.
- After installation, run
flutter doctoragain.
4. Run the Project
flutter pub get
flutter run
Build release files
flutter build apk --release
flutter build appbundle --release
flutter build ios --release
5. Upload to Server
The Messenger mobile app depends on a separate backend addon called api-addon-messangr.
The Flutter app alone is not enough.
Required backend path
/api-addon-messangr
What must be uploaded
- Upload the Messenger addon files to your server.
- Make sure the addon routes, modules, admin pages, and docs exist on the server.
- Make sure the addon is reachable from your production website domain.
Important after upload
After uploading the Messenger addon files, run the Messenger update script so the app settings and related backend definitions are registered correctly.
https://your-domain.com/api-addon-messangr/update.php
Or from the server terminal if CLI access is available:
php api-addon-messangr/update.php
Minimum server checks
- Open
/api-addon-messangr/update.phponce after upload. - Confirm your API credentials exist in
/admincp/apis. - Open the Messenger admin dashboard in
/api-addon-messangr/admin. - Check that
GET /api-addon-messangr/app/settingsreturns valid data. - Check that
GET /api-addon-messangr/pingresponds correctly if available on your server.
6. Create Android Keystore
Before publishing the Android version, create your own release keystore. This is required for signed release builds and future updates on Google Play.
keytool -genkeypair -v \
-keystore ~/your-messenger-release-key.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias your_key_alias
Then store the values in android/key.properties:
storePassword=YOUR_STORE_PASSWORD
keyPassword=YOUR_KEY_PASSWORD
keyAlias=your_key_alias
storeFile=/full/path/to/your-messenger-release-key.jks
7. Change Package Name / Bundle ID
The current project still uses default test identifiers. Replace them with your final package name,
for example com.yourcompany.messenger.
| Platform | File | Current Value |
|---|---|---|
| Android | android/app/build.gradle.kts |
com.example.messenger.messenger |
| iOS | ios/Runner.xcodeproj/project.pbxproj |
com.example.messenger.messenger |
- Update
applicationIdandnamespacefor Android. - Update
PRODUCT_BUNDLE_IDENTIFIERfor iOS. - Review any deep-link scheme or bundle-specific integration that depends on your brand.
8. Change App Name
The current visible app name is Sngine Massnger. Replace it with your final Messenger brand name.
android/app/src/main/AndroidManifest.xmlforandroid:label.ios/Runner/Info.plistforCFBundleDisplayNameandCFBundleName.
Old name: Sngine Massnger
New name: Your Messenger Name
9. Change App Icon and Splash
The project already includes separate branding files for the launcher icon and splash visuals. Replace them with your own final branding before release.
App icon files
| Purpose | File | Notes |
|---|---|---|
| Main icon source | assets/branding/app-icon-source.png |
Used by flutter_launcher_icons for Android and iOS. |
| Launcher icon config | pubspec.yaml |
Contains the flutter_launcher_icons settings. |
flutter pub get
dart run flutter_launcher_icons
Splash files
| Platform | File | Usage |
|---|---|---|
| Flutter in-app splash | assets/branding/splash-source.png |
Displayed while the Messenger app bootstraps. |
| Optional branding asset | assets/branding/splash-foreground.png |
Keep it updated if your design flow uses this foreground asset elsewhere. |
| Android native splash background | android/app/src/main/res/drawable*/background.png |
Used by launch_background.xml as the full-screen launch background. |
| iOS splash background | ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png |
Used by the iOS launch storyboard. |
| iOS splash image | ios/Runner/Assets.xcassets/LaunchImage.imageset/ |
Replace LaunchImage.png, @2x, and @3x. |
- Replace
assets/branding/splash-source.pngwith your final splash design. - Replace Android launch background images in the
drawable*folders. - Replace iOS launch assets in
LaunchBackground.imagesetandLaunchImage.imageset. - Run a clean build after changing branding assets.
flutter clean
flutter pub get
flutter run
10. License Activation
Before using the Messenger package in production, generate and download your Messenger license file from the official license portal.
License portal
https://license.fluttercrafters.com/
Required information
- Your website domain.
- Your purchase code.
- Open the license portal.
- Enter your website domain.
- Enter your purchase code.
- Generate and download the Messenger license file.
- Replace the local license file in this path:
messenger/lib/core/license/licenses.dart
messenger/lib/core/license/licenses.dart before building the app.
API credentials from your script admin panel
You also need the API credentials from your website admin panel because the Messenger app stores them at bootstrap time from the generated license.
https://your-domain.com/admincp/apis
API KeyAPI Secret
11. Deep Links and Timeline Integration
Messenger is designed to work alongside the Timeline app. It uses deep links to open Messenger chats and to jump back to Timeline nodes such as users, posts, pages, groups, and events.
Current Messenger scheme
| Platform | Location | Current value |
|---|---|---|
| Android | android/app/src/main/AndroidManifest.xml |
sngmessenger://chat |
| iOS | ios/Runner/Info.plist |
sngmessenger |
Timeline-related runtime settings
timelineUrlSchemetimelineDeepLinkHosttimelinePackagetimelineAndroidStoreUrltimelineIosStoreUrl
These values are loaded from GET /api-addon-messangr/app/settings and are used when Messenger
tries to open the separate Timeline app or its store fallback links.
12. Agora Setup
Messenger includes Agora-based calling support for audio and video calls. Before enabling call features in production, make sure your Agora configuration is valid.
Important Messenger runtime settings
| Key | Why it matters |
|---|---|
agoraEnabled |
Controls whether Agora-based calls are allowed. |
calls_enabled |
Controls whether call buttons should appear at all. |
audio_calls_enabled |
Controls whether audio call UI is available. |
video_calls_enabled |
Controls whether video call UI is available. |
agoraAppId |
Main Agora project App ID used by Messenger calls. |
agoraToken |
Optional static token if your setup needs it. |
agoraChannelPrefix |
Used to generate Messenger call channel names. |
agoraHeartbeatEnabled |
Controls call heartbeat updates during an active call. |
agoraHeartbeatIntervalSeconds |
Controls the heartbeat frequency. |
Where to configure them
- Messenger admin dashboard:
/api-addon-messangr/admin/app-settings - Public runtime endpoint:
/api-addon-messangr/app/settings - Fallback defaults in Flutter:
lib/settings.dart
agoraAppId is empty or invalid, call startup will fail even if the rest of the app works.
13. Dashboard Settings
After installation, Messenger-related settings can be changed from the Messenger admin dashboard, such as runtime flags, call settings, Timeline linking values, app colors, chat polling, and incoming call behavior.
Main admin URL
https://your-domain.com/api-addon-messangr/admin
Main app settings URL
https://your-domain.com/api-addon-messangr/admin/app-settings
14. App Settings
Messenger loads its public runtime settings from the backend during app bootstrap. This means some important values should be configured from the server dashboard, not only from local Flutter files.
Public settings endpoint
GET https://your-domain.com/api-addon-messangr/app/settings
What the app reads at startup
debugchatPollingEnabledchatPollingIntervalSecondsincomingCallPollingEnabledincomingCallPollingIntervalSecondsagoraHeartbeatEnabledagoraHeartbeatIntervalSecondscalls_enabledaudio_calls_enabledvideo_calls_enabledagoraEnabledagoraAppIdagoraTokenagoraChannelPrefixtimelineUrlSchemetimelineDeepLinkHosttimelinePackagetimelineAndroidStoreUrltimelineIosStoreUrl- Messenger app colors
/api-addon-messangr/app/settings first.
15. Screenshots Guide
This section is prepared for real setup screenshots. Save your screenshots inside
docs/screenshots/ using the exact filenames below and they will appear here automatically.
Recommended: show the main api-addon-messangr/admin dashboard.
Recommended: show timelineUrlScheme, timelineDeepLinkHost, and polling settings.
Recommended: show the Agora project page where the App ID is copied.
Recommended: show the selected Apple team and final Messenger bundle identifier.
Recommended: show applicationId and namespace in build.gradle.kts.
Recommended: show the Messenger license generation form on the official portal.
16. Release Checklist
- Upload the
api-addon-messangrbackend files and runupdate.php. - Generate and replace
lib/core/license/licenses.dartwith the customer Messenger license file. - Confirm
API KeyandAPI Secretare active in/admincp/apis. - Change Android
applicationIdand iOSbundle ID. - Change the app name in Android and iOS.
- Replace launcher icons and splash assets.
- Review Messenger app settings in
/api-addon-messangr/admin/app-settings. - Confirm Timeline integration values are correct.
- Review Agora settings and test both audio and video calls on real devices.
- Create the Android release keystore and configure
android/key.properties. - In Xcode, set your Apple team in
Signing & Capabilities. - Update the app version in
pubspec.yamlbefore final store builds. - Run
flutter clean,flutter pub get, then test Android and iOS separately.
version: 1.0.0+1
17. Troubleshooting
Messenger opens but login or chat fails
- Check that
api-addon-messangrwas uploaded correctly. - Run
/api-addon-messangr/update.phpagain after upload. - Confirm the generated license file matches the same website domain.
- Confirm the API credentials in
/admincp/apisare correct.
Messenger opens but Timeline integration fails
- Check
timelineUrlSchemein Messenger app settings. - Check
timelineDeepLinkHostin Messenger app settings. - Check
timelinePackagefor Play Store fallback on Android.
Calls do not start
- Check that
agoraEnabledis true. - Check that
calls_enabled,audio_calls_enabled, orvideo_calls_enabledare enabled as needed. - Check that
agoraAppIdis valid. - Check microphone and camera permissions on the device.
The app fails immediately on startup
- Check that
lib/core/license/licenses.dartwas replaced with a valid generated Messenger license file. - Run
flutter cleanandflutter pub getafter configuration changes. - Check the terminal, Android Studio, or Xcode logs for the first thrown error.
18. Important Notes
- Use a unique package name before publishing to Google Play or the App Store.
- Upload and update the Messenger backend addon before testing the mobile app.
- Some Messenger runtime values are loaded from
/api-addon-messangr/app/settings, not only from local Flutter code. - Complete license activation and confirm your API credentials before production use.
- Review Agora settings before enabling calls for customers.
- Run
flutter cleanandflutter pub getafter major configuration changes. - Always test Android and iOS builds separately before final release.
19. Official Sources
- Flutter Installation Guide
- Flutter SDK Archive
- Flutter Android Deployment
- Flutter iOS Deployment
- Android App Signing
- Apple Releases
- Xcode Updates
- Android Latest Updates
- Android Studio
- Agora Documentation