【问题标题】:Delayed push notifications and checking if user enabled it延迟推送通知并检查用户是否启用它
【发布时间】:2014-07-29 14:08:33
【问题描述】:

我开发了一个应用程序,它围绕推送通知构建自身。仅当用户到达注册过程的某个点时,应用才会请求通知权限。我已经设法做到了以下几点:

  • 应用维护了一个NSUserDefaults 变量,它指示是否需要在启动时注册推送(默认情况下:不需要)
  • 当注册达到那个点时,我翻转变量并在 iOS 7 上调用 -registerForRemoteNotificationTypes: 在 iOS 8 上调用 -registerUserNotificationSettings:

除非用户已经启用推送通知,然后稍后在“设置”中禁用它们,否则这可以正常工作。在这种情况下,我尝试在启动时重新注册 Push,它不会调用 -application:didRegisterForRemoteNotificationsWithDeviceToken-application:didFailToRegisterForRemoteNotificationsWithError

附加信息,iOS 8 的-isRegisteredForRemoteNotifications 也返回YES。 (我没有测试,但假设 -enabledNotificationTypes 适用于 iOS 7。)

我如何检测这种情况并向用户显示一个请求者,要求他在设置中重新启用通知?

【问题讨论】:

  • 我也看到了这个问题,它似乎是一个错误。
  • @gklka 你能解决这个问题吗?我也面临这个问题。
  • @anoop4real,我也遇到了这个问题,这就是我为解决方法所做的:stackoverflow.com/a/32448982/1473984
  • @ewiinnnnn 感谢您的帮助,现在我知道始终获得 TRUE 的原因。我的目的是找出设置是否被用户手动关闭或设置从未存在,因此我需要执行某些操作。 NotificationTypes 在这两种情况下都将返回 None,因此我无法决定是尝试注册还是向用户显示设置链接。这是一个棘手的用例。

标签: ios objective-c ios8 push-notification apple-push-notifications


【解决方案1】:
[[UIApplication sharedApplication] isRegisteredForRemoteNotifications];

返回一个布尔值,指示应用当前是否已注册 用于远程通知。

声明 SWIFT func isRegisteredForRemoteNotifications() -> Bool 目标-C - (BOOL)isRegisteredForRemoteNotifications 返回值 YES,如果应用程序注册远程通知并收到其设备令牌 如果没有注册、注册失败或被拒绝,则为 NO 由用户。

讨论 这个方法只反映成功完成 当您调用 registerForRemoteNotifications 方法。此方法不反映 由于连接性,推送通知是否实际可用 问题。 此方法返回的值考虑了 用户接收推送通知的偏好。

可用性 适用于 iOS 8.0 及更高版本。

Link to Apple Doc's

我会向 Apple 提交错误报告。

【讨论】:

  • 谢谢。此代码仅在 iOS 8 之前有效,因为 -enabledRemoteNotificationTypes 现在已弃用。我的另一个问题是我什么时候需要调用此代码?如果我在- application:didFinishLaunchingWithOptions: 中调用它,那么它会在之前运行我的推送注册委托方法(didRegister/failedToRegister)被调用。我认为使用计时器也不行。我也无法将它放入didRegister,因为它可能根本不会被调用。
  • 检查我对 iOS8 的编辑,您可以随时触发您正在检查的方法。在你的主 UIViewController f.e.此时您确定他们应该已注册 PN
  • 你没有仔细阅读我的问题。无论用户打开或关闭通知,此方法总是为我返回 YES
  • 你说得对,我一开始没有看到iOS8的问题。然而,根据文档,它应该在返回其值时考虑用户的偏好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 2019-05-25
相关资源
最近更新 更多