Cordova:检查用户是不是启用推送通知的干净方法
Posted
技术标签:
【中文标题】Cordova:检查用户是不是启用推送通知的干净方法【英文标题】:Cordova: clean way to check if user has enabled push notificationsCordova:检查用户是否启用推送通知的干净方法 【发布时间】:2016-03-22 18:03:04 【问题描述】:似乎可能有一个现有的cordova解决方案,但除了cordovaBadge插件之外我找不到它 - https://github.com/katzer/cordova-plugin-badge - http://ngcordova.com/docs/plugins/badge/
问题是由于与 LocalNotifications 冲突,我不得不删除此插件。 (好像我不能同时拥有它们)
cordovaBadge 有一个简单的 .hasPermission() 方法。科尔多瓦库中还有其他东西可以做到这一点吗?
【问题讨论】:
【参考方案1】:你可以使用cordova-diagnostic-plugin的isRemoteNotificationsEnabled()
方法:
cordova.plugins.diagnostic.isRemoteNotificationsEnabled(function(isEnabled)
console.log("Push notifications are " + (isEnabled ? "enabled" : "disabled"));
, function(error)
console.error("An error occurred: "+error);
);
【讨论】:
很遗憾,此解决方案仅适用于 ios 是的,有人知道有什么方法可以检查 android 吗?? 您是否需要了解 Android 我认为只能阻止在 Android 上显示通知而不是实际的推送通知本身? 自发布此答案以来,该插件已更新:isRemoteNotificationsEnabled()
现在在 Android 和 iOS 上均受支持。
奇怪的是,这每次都返回 true,即使尚未显示权限询问弹出窗口(在 Oreo 上)【参考方案2】:
亲爱的@vargen_ 你是对的!
我将这个插件与“phonegap-plugin-push”一起使用 - 只是为了捕捉@md repo 公开的一些新功能(请参阅推送操作...)。
诊断插件不允许知道是否请求权限(例如仅适用于 iOS 的“cordova.plugins.diagnostic.getRemoteNotificationsAuthorizationStatus”方法的“not_determined”响应)。
奇怪的是,第一次安装应用程序(Android)时,推送权限设置为“true”(即使没有显示任何模式)——在 android 8.1.0 上测试。
相反,如果我们使用cordova.plugins.diagnostic.permissionStatus 对象的“RECEIVE_WAP_PUSH”值,就像此处提供的示例https://www.npmjs.com/package/cordova.plugins.diagnostic#requestruntimepermission 一样,权限似乎总是“DENIED_ALWAYS”。
我很困惑如何管理这个适用于 Android 平台的插件的“第一次”案例。
【讨论】:
以上是关于Cordova:检查用户是不是启用推送通知的干净方法的主要内容,如果未能解决你的问题,请参考以下文章