Old message is not removing in iPhone notification try

I am using push plugin in ionic 3 app, everything is working fine but from my server end we are sending one message at a time and im receiving message to iPhone, but old message should overwrite with new message or once we receive new message then old message is clear automatically.. I'm not able to find anything related to this, please anybody help me to solve this.

 const options: PushOptions = {
 android: {},
 ios: {
   alert: 'true',
   badge: true,
   sound: 'false'
  },
 windows: {},
 browser: {
     pushServiceURL: 'http://push.api.phonegap.com/v1/push'
  }
};

const pushObject: PushObject = this.push.init(options);


pushObject.on('notification').subscribe((notification: any) => 
console.log('Received a notification', notification));

Upvotes: 0

Views: 270

Answers (1)

BRass
BRass

Reputation: 3838

It sounds like you aren't sending your messages configured to be "collapsible". By default each message will be distinct, not overwriting the last message. FCM documents this well:

https://firebase.google.com/docs/cloud-messaging/concept-options

Non-collapsible and collapsible messages

A non-collapsible message denotes that each individual message is delivered to the device. A non-collapsible message delivers some useful content, as opposed to a collapsible message like a content-free "ping" to the mobile app to contact the server to fetch data.

...

A collapsible message is a message that may be replaced by a new message if it has yet to be delivered to the device.

...

enter image description here

Or if you are not using FCM, here's a reference to Apple's APN docs directly.

To allow the coalescing of similar notifications, you can include a collapse identifier within a notification request. Normally, when a device is online, each notification request that you send to APNs results in a notification delivered to the device. However, when the apns-collapse-id key is present in your HTTP/2 request header, APNs coalesces requests whose value for that key is the same. For example, a news service that sends the same headline twice could use the same collapse identifier value for both requests. APNs would then coalesce the two requests into a single notification for delivery to the device. For details on the apns-collapse-id key

Update with some code details:

public void sendMessage(String title, String body, Map<String, String> data, boolean shouldCollapse) {          

        PlatformConfiguration platformConfig = new PlatformConfiguration(30);

        if (shouldCollapse)
            messageBuilder.setAndroidConfig(platformConfig.getCollapsibleAndroidConfig("test")).setApnsConfig(platformConfig.getCollapsibleApnsConfig("test"));

...

    public ApnsConfig getCollapsibleApnsConfig(String collapseKey) {

        return getCoreApnsConfig().putHeader("apns-collapse-id", collapseKey)
                .setAps(getNonCollapsibleApsBuilder().setCategory(collapseKey).setThreadId(collapseKey).build()).build();
    }

    public AndroidConfig getCollapsibleAndroidConfig(String collapseKey) {

        return getCoreAndroidConfig().setCollapseKey(collapseKey)
                .setNotification(
                        getNonCollapsibleAndroidNotificationBuilder().setTag(collapseKey).build()).build();
    }

Upvotes: 0

Related Questions