繁体   English   中英

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

[英]Push Notification delegate call backs are not getting called

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

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];

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

- (void)application:(UIApplication *)iApplication didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)iNewDeviceToken {

甚至没有调用以下方法:

- (void)application:(UIApplication *)iApplication didFailToRegisterForRemoteNotificationsWithError:(NSError *)iError {

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

有什么线索吗?

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

您必须在配置文件中启用推送通知,并在 Developer Portal 中使用 App Id 进行设置。 然后它应该工作。

还有一件事:如果您的手机已root/越狱以用于其他网络等,您将遇到问题。 我的手机已经root,没有一个代表被叫到。 我让一个同事把它放在他们的 iPad 上,效果很好,所以我知道代码没问题。

所以,我在手机上重新安装了操作系统,它开始工作了。

线索就在那里:当它失败时你会得到一个NSError实例。 所以要弄清楚它为什么会出错,检查NSError看看它告诉你什么。

您可能至少应该在您的应用程序中处理这种情况,例如显示错误消息“无法注册应用程序,请重试...”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM