标题说明了一切...我在每次应用程序启动时都会调用registerForRemoteNotificationTypes。第一次效果非常好。获得了设备 token ,但我所做的只是 NSLog。
现在再次运行应用程序... didRegister* 和 didFail* 回调都没有被执行。我的代码/网络没有任何变化。
这是正确的行为吗?我在 StackOverflow 上看到相互矛盾的答案。 This SO answer意味着 didRegister* 回调应该每次都发生。有人说你永远不应该缓存设备 token 。好吧,那很好……但是我第一次拿到 token 时没有对我的 token 做任何事情,所以现在它丢失了???通常情况下,应用程序当然应该将 token 推送到我的推送通知服务器,但我只是处于开发阶段,并没有这样做。那么现在这个 token 丢失了,我的应用程序将不会收到另一个 token ?这看起来很奇怪,因为苹果文档说在每个应用程序启动时调用 registerForRemoteNotificationTypes !如果您每次都没有取回新的(或回收的) token ,那么这样做有什么意义呢?还是还有其他事情发生?
最佳答案
didRegisterForRemoteNotificationsWithDeviceToken 每次都应该执行。
我的手机肯定处于奇怪的状态。我终于注意到,在通知中心中,列出了该应用程序,但应用程序名称下方没有角标(Badge)、警报或声音文本。我手动编辑了设置并启用了这些通知。然后,下次运行应用程序时,会触发 didRegister 回调。
无法通过禁用警报/角标(Badge)/声音来复制不良状态。每次还是收到回调。将这归结为侥幸。
关于ios - 每次应用程序注册时都会调用 didRegisterForRemoteNotificationsWithDeviceToken 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207008/