Push Notifications for Android and Web

If you're looking to speed up your Android app development, you can use our Android Chat SDK to get started. It's feature rich and will speed up your development!

Using Firebase, your users apps can receive push notifications directly to their client app for new messages when offline. In order to push notifications to Android devices, you need to have an application on Firebase and configure your Stream account using the Firebase server key.

Retrieving the Server Key from Firebase


Step 1


From the Firebase Console, select the project your app belongs to

Step 2


Click on the gear icon next to Project Overview and navigate to Project settings

Step 3


Navigate to the Cloud Messaging tab

Step 4


Under Project Credentials, locate the Server key and copy it

Step 5


Upload the Server Key in your chat dashboard

Step 6


Save your push notification settings changes

OR -


Upload the Server Key via API call

Remeber to add google-services.json file to your project source directory. You can download it in the Firebase console. For more information take a look at Firebase setup tutorial https://firebase.google.com/docs/android/setup.

Registering a device at Stream Backend


Once you configure Firebase server key and set it up on Stream dashboard a device which is supposed to receive push notifications needs to be registered at Stream backend. This is usually done by requesting a Firebase device token and passing it to the backend as follows:

Device registration logic above is also performed automatically when you set up User data in the Chat or ChatClient objects. If you use Android Chat SDK or Android ChatClient low level SDK there is no need to register the device manually.

Setting up notification data payload at Stream Dashboard


1. Setup the following push notification data payload at Stream Dashboard:

2. If you are using Stream Chat Android SDK add the following notifications config into your Chat building logic:

You can create your custom instance of ChatNotificationHandler class by inheriting from it and overriding its methods. This is the way to customize notification appearance, title, icon, etc.

3. Add FirebaseService to the AndroidManifest.xml, inside the <application> element:

If you are using low-level SDK (Stream Chat Android Client) then declare a different class in the manifest instead:

Handling notifications from multiple backend services


In case you want to use multiple push notifications providers, you may not want to use the OfflineSyncFirebaseMessagingService class. If you prefer to have your own implementation of FirebaseMessagingService and still work with Stream push notifications you will need to use the PushMessageSyncHandler class and invoke its methods inside your onNewMessage() and onNewToken() functions.

Redirection from notification to app


In order to adjust redirection from notification to the specific Activity in your app (when clicking on the notification), you need to an Intent which will hold a target Activity and metadata of the message. In order to define this Intent you should override ChatNotificationHandler class and pass it to ChatClient.Builder.

Possible issues


if RemoteMessage does not arrive (is not intercepted) check if notification template is defined correctly at the Stream Dashboard. Read more about difference between notification and data here.