Handling push notifications elegantly.

Push notifications help keep your customers up to date on information, but when the number of notifications is huge, the receivers may discard all the notifications together. This makes your customers miss important updates. In terms of providing the latest information to the customer, notifications with old information become obsolete and are to be discarded. 

A collapsible message is a message that may be replaced by a new message if it is yet to be seen or acted upon by the customer. Using the collapse key feature, you can overwrite the last update to the customer with a latest update. 

The following are some possible use-cases where a collapsible message is useful:

  • Increase your sales by updating your customers with up-to-date offer details.
  • Provide latest updates on election results.
  • Keep updating your customer with the latest information on the Weather updates.
  • Update sports fans with the latest scores.
  • Update the latest order status to your customers for a hassle-free delivery.

Platform-based implementation

APNS supports identifying multiple notifications into one single notification using the collapse identifier. Notifications with the same collapse identifier will only display the latest, and the older ones are discarded. This can be achieved by sending settings as part of the payload. 

Android does not support this feature, but app implementation can be customized to achieve this feature in Android. 

This blog provides the details of how it can be achieved in both the platforms.

Implement collapsing notifications in an iOS app

IBM Cloud Push Notifications supports this with the payload key apnsCollapseId. The following is a sample payload for sending a notification with the apnsCollapseId:

{
    "message":{
        "alert":"Build is successful "
    },
    "settings":{
        "apns":{
            "title":"new Status for the BuildId: #2345w",
           "apnsCollapseId":"CollapseId123"
        }
    }
}

This sample app displays the notifications on build status. Two notifications are sent to the iOS App about the status of a build with the same apnsCollapseId.  

Since the second notification also has the same apnsCollapseId and the user has not yet acted upon the notification, the old notification is replaced by the new one, and the user is displayed with only the new notification in the notification center. 

Implement collapsing notifications in an Android app

By default, Android does not support collapsing the notifications, but the same result can be achieved by custom implementation. 

Update the androidmanifest.xml file with the following. This helps override the Intent service:

<service android:exported="true" android:name=".MessageIntentServiceOne">
     <intent-filter>
          <action android:name="com.google.firebase.MESSAGING_EVENT"/>
     </intent-filter>
</service>

This MessageIntentServiceOne is called when a new notification arrives for the app:

public class MessageIntentServiceOne extends MFPPushIntentService {

    @Override
    public void onMessageReceived(RemoteMessage message) {

        String from = message.getFrom();

        Map<String, String> data = message.getData();
        JSONObject dataPayload = new JSONObject(data);

        MFPInternalPushMessage recMessage = new MFPInternalPushMessage(dataPayload);
        int collapseid = -1;
        JSONObject payload = null;
        try {
            payload = new JSONObject(recMessage.getPayload());
            if(payload != null && payload.has("collapseId")) {
                collapseid = payload.getInt("collapseId");
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        if(collapseid != -1 ) {
            onNotificationReceived(data, collapseid);
        } else {
            super.onMessageReceived(message);
        }
    }
}

MessageIntentServiceOne.onMessageReceived is triggered when a new notification arrives. This method reads the collapseId from the payload, and based on the collapseId, replaces the old notification so that only the latest notification is displayed to the customer.

The following is a sample payload for sending a notification with the collapseId:

{ 
   "message":{ 
      "alert":"Build is successful "
   },
   "settings":{ 
      "apns":{ 
         "title":"new Status for the BuildId: #2345w",
         "apnsCollapseId":"CollapseId123"
      },
      "gcm":{ 
         "androidTitle":"new Status for the BuildId: #2345w",
         "payload":{ 
            "collapseId":"CollapseId123"
         }
      }
   }
}

Below are how the notifications are replaced in the Android notification center:

Note: collapseKey settings supported by IBM Cloud Push Notifications for Android are applied only for dozed notifications; normal notifications will not support this feature.

Resources

More from Announcements

IBM offerings close 2023 strong in G2 Winter Reports

2 min read - IBM offerings were featured in more than 1,400 unique G2 reports, earning over 300 leader badges across various categories. G2 was visited 90 million times in 2023 and hosts over one million user reviews, solidifying the crucial role peer reviews play in the software buying process. IBM is thankful to its clients for the continued trust, feedback and partnership. All of which help IBM to enable global enterprises with innovative, intelligent, and effective business solutions. Highlights of IBM’s leadership: Ranked #1 in 152…

Tune in to the second episode of the Inspiring Voices podcast, featuring Dr. Nicola Hodson

< 1 min read - The Inspiring Voices podcast, brought to you by the Executive Search and Integration team at IBM, aims to inspire you in your life and career choices by showcasing great leaders and their personal stories about life, career, and how to make an impact. In this second episode, our host, Christian Zani, brings you the story of Dr. Nicola Hodson, Country General Manager UK & Ireland. Nicola reflects on IBMs culture and provides valuable insights into her experience as a new…

More accessible than ever: IBM Envizi ESG Suite now available in seven languages

2 min read - The capture, management, and reporting of environmental, social and governance (ESG) data is a topic of global relevance. IBM Envizi is making this process more accessible with this latest release of Envizi in seven languages. Customers can now view the IBM Envizi ESG Suite interface in English, French, German, Italian, Spanish, Brazilian-Portuguese, and Japanese.  Translated functionality includes key areas of the IBM Envizi user interface including home pages, summary pages, popular dashboards and PowerReports, menus, buttons, browse grids, search and…

IBM Newsletters

Get our newsletters and topic updates that deliver the latest thought leadership and insights on emerging trends.
Subscribe now More newsletters