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

Posted

技术标签:

【中文标题】在 iOS 上单击时,Phonegap 插件推送通知保留在托盘中【英文标题】:Phonegap Plugin Push notification stays in tray when clicked on iOS 【发布时间】: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) 【参考方案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 无效。 好的,去看看。

以上是关于在 iOS 上单击时,Phonegap 插件推送通知保留在托盘中的主要内容,如果未能解决你的问题,请参考以下文章

iOS,电话间隙推送插件('通知')未触发

Phonegap 插件推送在 iOS 13 及更高版本上返回奇怪格式的 iOS 设备令牌

在 Cordova/Phonegap 上使用 iOS 徽章的 Azure 推送通知

Phonegap 推送插件:构建 iOS 模板错误

使用PhoneGap插件点击推送通知时无法打开应用程序?

Phonegap 在设备上启用推送通知