无法在iPhone通知中删除旧消息,请尝试

时间:2019-02-18 14:38:51

标签: ios ionic3 phonegap-pushplugin cordova-plugin-fcm

我在ionic 3应用程序中使用了推插件,一切正常,但是从我的服务器端我们一次发送一条消息,并且我正在接收消息到iPhone,但是旧消息应该用新消息覆盖,或者一旦我们收到新消息消息,然后旧消息将自动清除。 我找不到与此相关的任何内容,请有人帮我解决。

 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));

1 个答案:

答案 0 :(得分:0)

听起来您没有发送配置为“可折叠”的邮件。默认情况下,每条消息都是不同的,不会覆盖最后一条消息。 FCM很好地证明了这一点:

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

  

不可折叠和可折叠的邮件

     

不可折叠的消息   表示每个单独的消息都已传递到设备。一种   不可折叠的消息传递了一些有用的内容,而不是   可折叠的消息,例如无内容的“ ping”到移动应用   与服务器联系以获取数据。

     

...

     

可折叠消息是一条消息,如果尚未传递到设备,则可以用新消息替换。

     

...

enter image description here

或者,如果您不使用FCM,请直接here's a reference查看Apple的APN文档。

  

要允许合并类似的通知,您可以添加一个   通知请求中的折叠标识符。通常,当   设备处于在线状态,您发送给APN的每个通知请求   导致将通知发送到设备。但是,当   您的HTTP / 2请求标头APN中存在apns-collapse-id密钥   合并该键的值相同的请求。例如,   两次发送相同标题的新闻服务可以使用相同的   两个请求的折叠标识符值。然后,APN将合并   将两个请求合并为一个通知,以传递到   设备。有关apns-collapse-id键的详细信息

更新一些代码详细信息:

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();
    }