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:检查用户是不是启用推送通知的干净方法的主要内容,如果未能解决你的问题,请参考以下文章

检查用户是不是打开了推送通知

当用户从 Cordova 的 iOS 通知中心选择通知时更改状态

如何检查 iPhone 上是不是启用了通知

Ionic iOS Cordova 推送令牌

实现细粒度启用/禁用推送通知

如何使用 Quickblox 在 Cordova 应用程序中实现推送通知支持?