2

标题说明了一切......我在每次应用启动时都会调用 registerForRemoteNotificationTypes。它第一次工作得很好。得到了一个设备令牌,但我所做的只是 NSLog 它。

现在再次运行应用程序... didRegister* 和 didFail* 回调都没有被执行。我的代码/网络没有任何变化。

这是正确的行为吗?我在 StackOverflow 上看到了相互矛盾的答案。 这个 SO 答案意味着 didRegister* 回调应该每次都发生。有人说你永远不应该缓存设备令牌。好吧,那很好……但是我第一次得到令牌时没有对我的令牌做任何事情,所以现在它丢失了???通常,应用程序当然应该将令牌推送到我的推送通知服务器,但我只是在这里处于开发阶段并没有这样做。所以现在这个令牌丢失了,我的应用程序不会收到另一个?这似乎很奇怪,因为 Apple 文档说在每次应用启动时调用 registerForRemoteNotificationTypes!如果您每次都没有取回新的(或回收的)令牌,那么这有什么意义呢?还是这里发生了其他事情?

4

1 回答 1

2

didRegisterForRemoteNotificationsWithDeviceToken 应该每次都执行。

我的手机一定是处于奇怪的状态。我终于注意到,在 Notifications Center 中,列出了该应用程序,但应用程序名称下方没有 Badges、Alerts 或 Sounds 文本。我手动编辑了设置并启用了这些通知。然后下次我运行应用程序时,触发了 didRegister 回调。

无法通过禁用警报/徽章/声音来复制不良状态。每次仍然收到回调。要把这归结为侥幸。

于 2013-01-09T00:28:37.313 回答