设备注册推送通知后iOS获取设备令牌?

Bli*_*ill 8 iphone objective-c apple-push-notifications ios

我知道您可以使用以下方法获取设备令牌: -

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
Run Code Online (Sandbox Code Playgroud)

但是,如果我理解正确,则此方法仅在应用程序第一次运行并且用户接受通知请求时被调用.在随后重新启动应用程序时,永远不会再次调用该方法.

所以我的问题是 - 在用户接受通知后,还有其他方法可以访问设备令牌吗?

编辑 - 我知道所有设备都在线,临时配置文件链接到应用程序ID,因为我可以接收推送通知.接收推送通知不是问题 - 获取设备令牌并将其存储在Parse中是我想要实现的.

谢谢

jac*_*ash 11

你错了.

-application:didRegisterForRemoteNotificationsWithDeviceToken:文档:

委托在调用registerForRemoteNotificationTypes:方法之后接收此消息UIApplication,并且注册过程中没有错误[...]此方法可以在其他罕见情况下调用,例如用户在从数据恢复设备后启动应用程序时这不是设备的备份数据.在这种特殊情况下,应用程序在用户启动之前不会知道新设备的令牌.

从Apple Push通知指南:

此外,永远不要缓存设备令牌并将其提供给您的提供商; 始终在需要时从系统获取令牌.如果您的应用程序先前已注册,则registerForRemoteNotificationTypes:在操作系统中调用结果会立即将设备令牌传递给代理,而不会产生额外的开销.另请注意,可以在设备令牌更改时调用委托方法,而不仅仅是响应您的应用注册或重新注册.

换句话说,只要您调用registerForRemoteNotificationTypes:并且操作成功,以及在令牌更改时的其他时间,就会调用该方法

编辑:

如果蜂窝或Wi-Fi连接不可用,则不会调用application:didRegisterForRemoteNotificationsWithDeviceToken:方法或application:didFailToRegisterForRemoteNotificationsWithError:方法.对于Wi-Fi连接,当设备无法通过端口5223与APN连接时,有时会发生这种情况.

或者,请确保使用与具有推送通知权利的应用ID相关联的配置文件构建


Smi*_*key 1

嗯,请尝试再次检查您的配置文件。听起来您可能正在使用带有通配符的通配符。您可能会收到来自服务器的推送,因为您最初使用正确的配置文件进行部署,但是如果您更改为使用通配符配置文件(例如团队配置文件),您将无法正确注册远程通知...