Cordova:检查用户是否启用推送通知的清洁方法

3
2个回答

9

您可以使用isRemoteNotificationsEnabled()方法,该方法来自于cordova-diagnostic-plugin


该插件可帮助您检测远程通知是否启用。
cordova.plugins.diagnostic.isRemoteNotificationsEnabled(function(isEnabled){
    console.log("Push notifications are " + (isEnabled ? "enabled" : "disabled"));
}, function(error){
    console.error("An error occurred: "+error);
});

很遗憾,这个解决方案仅适用于iOS。 - Dragos
有人知道如何在 Android 上进行相同的检查吗? - Kishan Oza
你需要了解一下安卓系统,我认为只有在安卓系统上可以阻止通知的显示,而无法阻止推送通知本身。 - Donal Rafferty
3
自此答案发布以来,插件已进行更新:isRemoteNotificationsEnabled() 现在已在 Android 和 iOS 上受支持。 - DaveAlden
奇怪的是,即使在Oreo上弹出权限请求弹窗之前,这个语句每次都会返回true。 - vargen_
我可以确认该插件在iOS 12.1.4和Cordova 8.1.2上运行良好。感谢@DaveAlden。 - Naderio

0

亲爱的@vargen_,你是对的!

我正在使用这个插件与'phonegap-plugin-push'一起使用 - 只是为了捕获由@md repo公开的一些新功能(请参见推送操作...)。

诊断插件不允许知道是否已经请求了权限(例如'cordova.plugins.diagnostic.getRemoteNotificationsAuthorizationStatus'方法仅适用于iOS的“not_determined”响应)。

奇怪的是,当应用程序首次安装(Android)时,推送权限设置为'true'(即使没有显示任何模态框) - 在android 8.1.0上进行了测试。

相反,如果我们像这里提供的示例https://www.npmjs.com/package/cordova.plugins.diagnostic#requestruntimepermission中使用cordova.plugins.diagnostic.permissionStatus对象的'RECEIVE_WAP_PUSH'值,则权限似乎始终为'DENIED_ALWAYS'。

我非常困惑如何管理Android平台上此插件的“第一次”情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接