Phonegap插件在iOS上单击时,推送通知会保留在托盘中

时间:2016-03-04 14:15:43

标签: ios iphone cordova notifications phonegap-plugins

我构建了一个接收推送通知的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(),但没有区别。

是否有人知道如何确保通知托盘上的通知在点击后消失?

功能

  • 设备:带iOS 7.0.4的iPod Touch
  • 插件:Phonegap插件推送

1 个答案:

答案 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": {}
});