推送通知委托回调没有被调用

Abh*_*nav 4 iphone cocoa-touch objective-c push-notification ios

我通过调用以下代码来注册推送通知:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];
Run Code Online (Sandbox Code Playgroud)

但在极少数情况下,委托后不会被调用:

- (void)application:(UIApplication *)iApplication didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)iNewDeviceToken {
Run Code Online (Sandbox Code Playgroud)

甚至没有跟随方法被调用:

- (void)application:(UIApplication *)iApplication didFailToRegisterForRemoteNotificationsWithError:(NSError *)iError {
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因.收到设备令牌后,我正在继续我的应用程序流程.因此,在一些罕见的情况下我的应用程序挂起.

任何线索?

小智 9

根据文档,在设备与推送服务器建立持久连接之前,两个回调都不会发生.因此,如果没有可用的wifi或数据连接,则不会发生回调 - 并且apple不会将此视为错误情况.据我所知,导致didFail ...回调的唯一错误是不正确的证书/应用程序权限问题(开发问题),或者用户拒绝权限(尽管我只是偶尔能够重现这个通过更改日期并关闭手机).