我正在通过调用以下代码来注册推送通知:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];
但在极少数情况下,不会调用以下委托(delegate):
- (void)application:(UIApplication *)iApplication didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)iNewDeviceToken {
甚至没有调用以下方法:
- (void)application:(UIApplication *)iApplication didFailToRegisterForRemoteNotificationsWithError:(NSError *)iError {
这可能是什么原因。收到设备 token 后,我将继续我的应用程序流程。因此,在极少数情况下,我的应用会挂起。
有什么线索吗?
最佳答案
根据文档,在设备与推送服务器建立持久连接之前,这两个回调都不会发生。因此,如果没有可用的 wifi 或数据连接,则不会发生回调 - 苹果不会将此视为错误情况。据我所知,唯一可能导致 didFail... 回调的错误是不正确的证书/应用程序权限问题(开发问题),或者用户拒绝许可(尽管我只是偶尔能够重现这个通过更改日期和关闭手机)。
关于iphone - 未调用推送通知委托(delegate)回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631710/