获取新的苹果设备令牌?

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

不,您不能请求新的设备令牌。 他们不时过期,只有这样你才能得到一个新的(或者如果你有一个不同的应用程序与不同的包ID,令牌将不同)。

创build一个函数来处理didRegister,并从didRegisterForRemoteNotificationsWithDeviceToken调用它。 然后当你需要强制通话时使用该function。

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

没有办法获得不同的设备令牌。 当用户注销时,您需要从后端删除令牌。

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

您始终可以通过调用registerForRemoteNotificationTypes来强制调用didRegisterForRemoteNotificationsWithDeviceToken ,但通常会得到相同的设备标记。

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

这种方法也允许有不需要authentication的通知 – 只需通过不变的通过即可。

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