Android - 推送通知是否开启?

标签 android push-notification application-settings

如果用户在应用程序设置中关闭推送通知,如何以编程方式检查? 我可以直接从应用打开应用设置 Intent 以提示用户打开它吗?

enter image description here

谢谢

最佳答案

假设您指的是 Google Cloud Messaging(因为您使用的是 android 和 push-notification 标签),没有用于启用/禁用 GCM 服务的常规设置(与 iOS 设备的 Apple Push Notifications 服务不同)。

当您安装应用程序时,如果该应用程序使用 Google 云消息传递,它将列在该应用程序运行所需的权限列表中。选择安装该应用即表示您允许它向您发送推送通知。

也就是说,为了让应用程序真正接收 GCM 消息,您的应用程序必须以编程方式注册到 GCM 服务。您可以在您的应用程序中的任何地方执行此操作,并且您可以创建一个 app settings Activity (或 fragment 或其他),用户可以在其中启用/禁用 GCM(这将触发注册/注销到/从 GCM)。您的应用程序可以包含一个永久存储区,该存储区将保存您在注册 GCM 时收到的注册 ID,您可以使用该存储区来确定您的应用程序是否已注册到 GCM。

如果应用程序已经在运行(如果您有一些代码可以做到这一点),您可以要求您的用户将其打开。如果它没有运行并且该应用程序未在该设备上注册 GCM,则您的服务器无法向其发送 GCM 消息。

如果您想克服这个障碍,您可以自动注册到 GCM(当应用程序首次启动时)。然后,您可以随时向应用程序发送消息。如果您仍想让用户决定他们是否要查看这些通知,您可以在您的应用程序设置中设置一个标志,以启用/禁用您创建的作为传入 GCM 消息结果的 UI 通知。 GCM 服务将始终启用,但除非用户选择查看通知,否则当 GCM 消息到达时,您的应用不会显示任何内容。

关于Android - 推送通知是否开启?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16912629/

相关文章:

android - 在 asp.net 网站 Activity 和 android 应用程序之间进行通信的最佳方式是什么?

.net - 是否有 urbanairship api 的 .net 包装器库?

javascript - HTML 地理位置推送通知

c# - 应用级自定义SettingsProvider的SettingsProviderAttribute替换

android - android应用程序是否在后台运行?

java - 如果要从需要 api key 的 Web 服务检索数据,如何使用 Spring?

wpf - WPF à la Clean Code 中的命令行参数和 "global settings"

c# - User.config 是如何创建的以及如何使用

Android studio 2.3 刷新gradle project taking forever

android - RenamingMockContext 需要提供getResources