我在离子3应用程序中使用push插件,一切正常但从我的服务器端我们一次发送一条消息并且我正在接收消息给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));
听起来好像你没有发送你的消息被配置为“可折叠”。默认情况下,每条消息都是不同的,不会覆盖最后一条消息。 FCM记录得很好:
https://firebase.google.com/docs/cloud-messaging/concept-options
不可折叠和可折叠的消息
不可折叠的消息表示每个单独的消息被传递给设备。不可折叠的消息提供一些有用的内容,而不是可折叠的消息,例如对移动应用程序的无内容“ping”以联系服务器以获取数据。
...
可折叠消息是一条消息,如果尚未将其传送到设备,则可以用新消息替换该消息。
...
或者,如果您没有使用FCM,here's a reference直接使用Apple的APN文档。
要允许合并类似通知,您可以在通知请求中包含折叠标识符。通常,当设备在线时,您发送给APN的每个通知请求都会导致向设备发送通知。但是,当HTTP / 2请求标头中存在apns-collapse-id密钥时,APN会合并其密钥值相同的请求。例如,两次发送相同标题的新闻服务可以对两个请求使用相同的折叠标识符值。然后,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();
}