【问题标题】:Phonegap Plugin Push notification stays in tray when clicked on iOS在 iOS 上单击时,Phonegap 插件推送通知保留在托盘中
【发布时间】:2016-03-04 14:15:43
【问题描述】:

我构建了一个接收推送通知的 phonegap 应用程序。当我在 Android 上运行该应用程序时,一切正常,但当我在 iOS 上运行它时,推送通知在单击后仍保留在通知托盘中。

我正在为 Phonegap 应用程序使用 Phonegap 推送插件,并且正在使用 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 插件推送

【问题讨论】:

  • 您在哪个 iOS 版本上测试?
  • 我正在使用 iOS 7.0.4 的 iPod Touch 进​​行测试
  • 您能具体说明一下您使用的推送通知插件吗?
  • 我正在使用phonegap插件推送(github.com/phonegap/phonegap-plugin-push)

标签: ios iphone cordova notifications phonegap-plugins


【解决方案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": {}
});

【讨论】:

  • 这不起作用。通知保留在托盘中。图标徽章编号不是应用程序图标上的编号而不是通知托盘中的通知吗?
  • 这是图标的编号,但也应该删除托盘上的所有通知。
  • 尝试调用它两次,首先是 1,然后是 0
  • 不,没有任何反应。当我只用 1 调用它时,图标的角落确实会出现 1,因此该函数确实有效,但调用 1 然后调用 0 无效。
  • 好的,去看看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多