我构建了一个接收推送通知的phonegap应用程序。当我在Android上运行应用程序时,一切都运行良好,但是当我在iOS上运行时,推送通知会在点击后保留在通知托盘中。
我正在为Phonegap应用程序使用Phonegap Push Plugin,我使用PushSharp发送通知。这是我的代码:
var push = PushNotification.init({
"android": { "senderID": "XXXXXXXX", "icon":"pushicon" },
"ios": { "alert": "true", "badge": "true", "sound": "true"},
"windows": {}
});
push.on('registration', function(data) {
var deviceInfo = {
notificationId: data.registrationId,
phonePlatform: device.platform,
phoneVersion: device.version,
phoneModel: device.model
}
info = $.extend(info, deviceInfo);
localStorageService.setDeviceInfo(info);
});
push.on('notification', function (data) {
alert(data.additionalData.title);
});
push.on('error', function(e) {
console.log('Something went wrong: ' + e.message);
});
我也试过调用push.finish(),但没有区别。
是否有人知道如何确保通知托盘上的通知在点击后消失?
功能
答案 0 :(得分:1)
在iOS 8及更高版本中,当您点按此按钮时,它会从通知中心删除,但在iOS 7及更早版本中,它不会以这种方式运行。
如果要从通知中心删除推送通知,则必须将徽章设置为0。
push.setApplicationIconBadgeNumber(function() {
console.log('success');
}, function() {
console.log('error');
}, 0);
如果它不起作用,您可以尝试先将其设置为更大的数字,然后再设置为0
push.setApplicationIconBadgeNumber(function() {
push.setApplicationIconBadgeNumber(function() {
console.log('success');
}, function() {
console.log('error');
}, 0);
}, function() {
console.log('error');
}, 2);
该插件的最新版本还有一个clearAllNotifications
方法:
push.clearAllNotifications(function() {
console.log('success');
}, function() {
console.log('error');
});
或者您也可以将clearBadge选项传递给init方法
var push = PushNotification.init({
"android": { "senderID": "XXXXXXXX", "icon":"pushicon" },
"ios": { "alert": "true", "badge": "true", "sound": "true", clearBadge: "true" },
"windows": {}
});