获取新的Apple设备令牌?

时间:2014-06-10 17:58:58

标签: ios push-notification apple-push-notifications devicetoken

我正在创建一个应用程序,允许用户注销应用程序并以其他用户身份登录。新用户登录后,有没有办法从Apple获取新的设备令牌?有没有办法强制调用didRegisterForRemoteNotificationsWithDeviceToken方法?

4 个答案:

答案 0 :(得分:3)

不,您无法申请新的设备令牌。它们会不时到期,只有这样你才会得到一个新的(或者如果你有一个不同的应用程序与不同的包ID,令牌将是不同的。)

创建一个函数来处理didRegister并从didRegisterForRemoteNotificationsWithDeviceToken调用它。然后在需要强制呼叫时使用该功能。

由于用户正在登录,因此每次有人登录时都会将带有设备令牌的信息传递给服务器,并将用户与服务器端的令牌相关联。

答案 1 :(得分:3)

无法获取其他设备令牌。当用户注销时,您需要从后端删除令牌。

答案 2 :(得分:2)

我不确定它在iOS7及更高版本中的表现如何,但在iOS7之前,同一设备上的所有应用程序都会获得相同的设备令牌,因此您提出的要求是不可能的。从iOS7开始,每个应用程序都有自己的设备令牌,但我不确定该令牌是否可以在连续注册时更改。

您可以随时拨打didRegisterForRemoteNotificationsWithDeviceToken强制拨打registerForRemoteNotificationTypes,但通常会获得相同的设备令牌。

答案 3 :(得分:0)

如果目标是将通知与特定用户相关联,那么从iOS 10开始,您可以尝试实施NotificationService扩展名,以仅过滤与当前经过身份验证的用户关联的通知。虽然同一设备上的多个用户将与服务器上的同一设备令牌相关联,但客户端将仅显示当前用户的通知 - 假设一次只能登录一个用户。

此方法还允许具有不需要身份验证的通知 - 只需通过未经过更改的通知。

如上所述,您可以在用户登录后通过显式调用UIApplication.shared.registerForRemoteNotification(Swift 3+)强制更新请求 - 响应令牌。然后将该用户+设备令牌组合发送到您的应用程序服务器以供使用。