Set up push notifications for FCM
This part covers the following step-by-step instructions of our push notifications for FCM.
Note: See Set up push notifications for HMS if you want to see the instructions for HMS push notifications.
Step 1: Generate server key for FCM
The Sendbird server requires your server key to send notification requests to FCM on behalf of your server. This is required for FCM to authorize HTTP requests.
If you already have your server key, you can skip this step and go directly to Step 2: Register server key to Sendbird Dashboard.
- Go to the Firebase console. If you don't have a Firebase project for your client app, create a new project.
Select your project card to move to Project Overview.
Click the gear icon at the upper left corner and select Project settings.
- Go to Cloud Messaging > Project credentials and copy your server key.
- Go to the General tab and select your Android app to add Firebase to. During the registration process, enter your package name, download the
google-services.jsonfile, and place it in your Android app module root directory.
Step 2: Register server key to Sendbird Dashboard
Sign in to your dashboard and go to Settings > Chat > Push notifications.
Turn on Notifications and select Send to devices both offline and online.
Click Add credentials and register the app ID and app secret acquired at Step 1.
Step 3: Set up Firebase and the FCM SDK
Add the following dependency for the Cloud Messaging Android library to your
build.gradle file as below.
Note: The firebase-messaging version should be 19.0.1 or higher.
Then the Chat SDK writes and declares our push notifications with multi-device support in the manifest while you build your client app. If you declare another push service that extends FirebaseMessagingService in your client app's manifest, this multi-device support doesn't work in the app.
Note: To learn more about this step, refer to Firebase's Set Up a Firebase Cloud Messaging client app on Android guide. The Google FCM sample project guide is another helpful reference.
Step 4: Implement multi-device support in your Android app
The following classes and interface are provided to implement push notifications with multi-device support.
|Class or interface||Description|
A class that provides the
A class that provides the methods to register and unregister a
An interface that contains the
These are used to inherit your
MyFirebaseMessagingService class from the
SendbirdPushHandler class and implement the following.
Note: Upon initial startup of your app, the FCM SDK generates a unique and app-specific registration token for the client app instance on your user's device. FCM uses this registration token to determine which device to send notification messages to.
In order to receive information about push notification events for the current user from the Sendbird server, register a
MyFireBaseMessagingService instance to
SendbirdPushHelper as an event handler.
To receive a push notification when the app is in the background or closed, you must register the
MyFireBaseMessagingService instance. This instance isn't dependent on Sendbird Chat SDK, so even in cases where
Sendbird.init() isn't called in
MyFireBaseMessagingService must be registered in the
onCreate() method as shown in the code below.
Also, register a
MyFireBaseMessagingService instance when a user logs into the Sendbird server as follows.
The instance should be unregistered when a user logs out from the Sendbird server as follows.
Step 5: Handle an FCM message payload
The Sendbird server sends push notification payloads as FCM data messages, which contain notification-related data in the form of key-value pairs. Unlike notification messages, the client app needs to parse and process these data messages in order to display them as local notifications.
The following code shows how to receive a push notification payload and parse it as a local notification. The payload consists of two properties:
message property is a string generated according to a push notification template you set on the Sendbird Dashboard. The
sendbird property is a
JSON object which contains all the information about the message a user has sent. Within
MyFirebaseMessagingService.kotlin, you can show the parsed messages to users as a notification using your custom
Note: See Firebase’s Receive messages in an Android app guide to learn more about how to implement code to receive and parse a FCM notification message, how notification messages are handled depending on the state of the receiving app, how to edit the app manifest, or how to override the
The following is a complete payload format of the
sendbird property, which contains a set of provided key-value items. Some fields in the push notification payload can be customized in Settings > Chat > Notifications on Sendbird Dashboard. For example,
push_alert are created based on Title and Body text you set in Push notification content templates, respectively, in the Push notifications menu. In order to display them in a local notification, pass
push_alert of the push notification payload into the
setContentText methods of the
NotificationCompat.Builder class, respectively. Also, the
channel_unread_count field can be added into or removed from the payload in the same menu on the Sendbird Dashboard.
Step 6: Enable multi-device support on Sendbird Dashboard
After the above implementation has been completed, multi-device support should be enabled on Sendbird Dashboard by going to Settings > Application > Notifications > Push notifications for multi-device users.