我们正在开发一款可以接收推送通知的应用。在我们的测试设备上,当系统提示我们发送通知时,我们点击了确定,但未能存储我们收到的令牌。 (我们对服务器的请求未得到妥善处理,令牌未被我们存储在其他地方)。
我们已尝试以下方法再次触发函数didRegisterForRemoteNotificationsWithDeviceToken(无效):
然而,我们不能让它再次“提示”我们,并且APN开发服务器似乎已经注册了所以我假设这就是为什么didRegisterForRemoteNotificationsWithDeviceToken不会再次触发。
最后我们无法获得新令牌,我不知道如何检索已注册的令牌。有谁知道如何检索已注册的令牌?
答案 0 :(得分:7)
如果你每次启动应用程序时调用registerForRemoteNotificationTypes:UIApplication的方法,应用程序:didRegisterForRemoteNotificationsWithDeviceToken:delegate方法也会每次调用。首次注册时,iOS会询问用户是否需要接收通知,iOS会将Apple Notification Service连接到注册并获取设备令牌。之后,registerForRemoteNotificationTypes:方法调用既不会询问用户也不会连接APN,iOS会立即使用已注册的令牌调用委托方法。
如果您希望应用程序启动再次询问用户,请调用unregisterForRemoteNotifications,然后再次调用registerForRemoteNotificationTypes:方法。
相关的一些详细信息:iOS Application Client Side Device Token Management With Apple Push Notification
答案 1 :(得分:0)
我发现当应用程序完全关闭并再次启动时,应用程序将始终调用didRegisterForRemoteTrigger,这将为您提供已注册的令牌。我不确定为什么当我第一次尝试恢复令牌时它没有调用此方法,但这似乎是解决方案。