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-server
branch to Soluvas GitHub repositorysingle-server
branch, 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_gateway
Push_gcm_api_key
Push_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.