2014-10-11 24 views

回答

2

恐怕不是。虽然你可以确定是否启用通知(使用UIApplication的isRegisteredForRemoteNotifications方法),但这并不告诉你为什么通知未被注册。

它可以是任何的理由如下:

•用户从未提示他们。

•用户已明确拒绝他们。*

•用户认可他们在某些时候,但后来将它们关闭。*

这是不幸的,苹果不提供检测手段提示时用户拒绝推送通知注册。我怀疑这是一个有意识的设计决策,旨在使开发人员不太可能向用户发出高招。

我希望这会有所帮助。

(* ...您可以通过在第一次注册时存储持久性标志来推断第二个和第三个选项中的哪一个适用,但这似乎不是您要求的......)

+0

如果只有'hasDeclinedRemoteNotificiationPermission',我们可以引导用户进入设置选项卡,而不是静静地调用'registerForRemoteNotifications'。我认为下一个最好的做法是保持我们提供系统对话框的旗帜天气,然后结合使用标记和已注册的推送令牌来确定我们需要进入设置选项卡或展示推送的天气。 – Zorayr 2015-05-18 02:12:04

2

没有直接的方法做到这一点,但我已经实施了一种解决方法:APNPermisionRequest

这里有趣的部分是添加一个观察者UIApplicationDidBecomeActiveNotification,然后显示请求。通知被触发后(即请求被回答),您可以使用[[UIApplication sharedApplication] isRegisteredForRemoteNotifications]检查状态。

相关问题