Reference:
- Rocket-Chat – Push Notifications
- Whitelabeling Mobile Apps | Rocket-Chat
- https://github.com/RocketChat/Rocket.Chat.ReactNative (branch is
single-server, from Whitelabeling documentation Hendy assumes don’t use tags)
Requirements
- BugSnag account
- Firebase project
Android
- Fork / pull from RocketChat’s
single-serverbranch to Soluvas GitHub repositorysingle-serverbranch, e.g. from https://github.com/RocketChat/Rocket.Chat.ReactNative/tree/single-server to https://github.com/soluvas/Rocket.Chat.ReactNative/tree/single-server - Open Gitpod on specific branch, e.g. https://gitpod.io/#https://github.com/soluvas/Rocket.Chat.ReactNative/tree/single-server
Run: (first ensure you have an emulator or a connected device, you can use adb devices to check)
yarn
yarn run react-native run-android
yarn run react-native start
# now you can launch the app in device
If you don’t run react-native start, you’ll get error in device: “Unable to load script. Make sure you’re either running a Metro server…”
Customizations
config.js (note: This file is originally committed to Git, but we now gitignore this file)
export default {
BUGSNAG_API_KEY: 'our own'
};
android/gradle.properties (note: This file is originally committed to Git, but we now gitignore this file)
APPLICATIONID=com.soluvas.chat.reactnative
VERSIONNAME=4.9.0 # first 3 numbers follow Rocket.Chat.ReactNative stable, then our own build number
VERSIONCODE=1 # follows Soluvas own release schedule
BugsnagAPIKey=our own
Change strings/app_name and strings/share_extension_name on ./android/app/src/main/res/values/strings.xml
To change icons on the folders ./android/app/src/main/res/mipmap*, use Android Asset Studio.
- Launcher icon generator ->
mipmap-*/ic_launcher.png(square bevel),mipmap-*/ic_launcher_foreground.png(round white bevel 45% padding),mipmap-*/ic_launcher_round.png(round bevel) - Launcher icon generator ->
mipmap-*/logo.png(no bevel, no padding) (you need to delete upstream drawable-*/logo.png) - Notification icon generator ->
mipmap-*/ic_notification.png(Android Asset Studio generates drawable-* folders, you need to move them into mipmap-*/ instead; else you’ll get “java.lang.IllegalArgumentExceptionNotificationManager.java:516 Invalid notification (no valid small icon)” when receiving push notification) - drawable-xxxhdpi/splash.png (384 px height)
./android/app/google-services.json from Firebase project soluvas-production
./app.json
“server”: “https://chat.soluvas.com“,
Change all applicationId (chat.rocket.reactnative) references as on this commit (compare it against play folder): https://github.com/RocketChat/Rocket.Chat.ReactNative/commit/518e56379d88937d7f9a572c7bd61716a4d0b7fe plus additionally:
- change package of MainPlayApplication, Encryption, LoadNotification
- anything that refers to Ejson, MainApplication, CustomPushNotification must import com.soluvas.chat.reactnative
Disable Gateway
You’ll need to Administration > Setup Wizard > Terms (accept) and Register Server, before you can disable the gateway. See issue #18893. The relevant settings in collection rocketchat_settings are:
Push_enable_gatewayPush_gcm_api_keyPush_gcm_project_number
Alternatively you can use Managing settings using environment variables.
Debugging Push Notifications
- Use Rocket.Chat Admin’s “Send a test push to my user”.
- Use Firebase Console (e.g. https://console.firebase.google.com/u/0/project/soluvas-production/notification) to test send a Notification (text, no need for app to run) but not Data (structured).
- Use Firebase Console > Grow > Cloud Messaging > Reports to view reports.
- Remote debug server | Rocket.Chat Forums
- Developer Guides > Troubleshooting
- Set desired Debug_Level (commit). See Admin > Logs > Debug level.
- Debug FCM (Firebase Cloud Messaging Notifications) using ADB: this is not so useful because instead of testing FCM using Firebase Console (end-to-end), it tests using just adb and requires root.
Rocket.Chat Server
Use Gitpod to launch workspace on soluvas/Rocket.Chat branch soluvas-3.x.
Requirements: Meteor. See: Using Gitpod.io for your Meteor project, Meteor apps on gitpod.io.
meteor npm install
meteor npm start
Build Debug APK & Publish Release APK
See React Native. Size 4.9.0 APK is 46 MiB, 4.12.0 AAB is 46 MiB.
Since 4.12, instead of assembleRelease, probably try bundlePlayRelease or assemblePlayRelease.
Merge Changes from Latest Stable Rocket.Chat.ReactNative Mobile App
Make sure your (local) working tree is clean. Then try merging from upstream/single-server, which likely will cause conflicts.
git fetch upstream
git merge upstream/single-server
Then you need to resolve conflicts.
If there are deleted or missing files that need to be re-implemented, make a note of that in Soluvas Board > Chat in Notion, so it doesn’t get lost.
Then commit and push.