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 Consulting augments expertise with AWS Competencies: A win-win for clients 

3 min read - In today's dynamic economic landscape, businesses demand continuous innovation and speed of execution. At IBM Consulting®, our unwavering focus on partnerships and shared commitment to delivering enterprise-level solutions to mutual clients have been core to our success.   We are thrilled to announce that IBM® has recently gained five competencies from Amazon Web Services (AWS) in vital domains including Cloud Operations, Internet of Things (IoT), Life Sciences, Mainframe Modernization, and Telecommunications. With these credentials, IBM further establishes its position as a…

Probable Root Cause: Accelerating incident remediation with causal AI 

5 min read - It has been proven time and time again that a business application’s outages are very costly. The estimated cost of an average downtime can run USD 50,000 to 500,000 per hour, and more as businesses are actively moving to digitization. The complexity of applications is growing as well, so Site Reliability Engineers (SREs) require hours—and sometimes days—to identify and resolve problems.   To alleviate this problem, we have introduced the new feature Probable Root Cause as part of Intelligent Incident…

Reflecting on IBM’s legacy of environmental innovation and leadership

4 min read - Upholding a legacy of more than 50 years of environmental responsibility through our company’s actions and commitments, IBM continues to be a leader in driving sustainability for our business, our communities and our clients—including a 34-year history of annual, public environmental reporting, which we continue today. As a hybrid cloud and artificial intelligence (AI) company, we believe that leveraging technology is key to unlocking impact, and it will play a substantial role in how society addresses, adapts to, and overcomes…

IBM Newsletters

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