获取新的苹果设备令牌?

4

我正在创建一款应用程序,允许用户注销并以不同的用户身份登录。如果新用户登录,有没有办法从苹果那里获取一个新的设备令牌?是否有一种强制调用didRegisterForRemoteNotificationsWithDeviceToken方法的方法?

4个回答

3

不可以请求新的设备令牌。它们会不时地过期,只有在这种情况下才会获得新的令牌(或者如果您有一个不同的应用程序,具有不同的包标识,那么令牌将不同)。

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

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


每次有人登录时,仅传递新的令牌给服务器是不够的。当用户退出登录时,您还需要从服务器中删除该令牌。 - ken

3

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


2
我不确定在iOS7及以后的版本中会有什么变化,但是在iOS7之前,同一设备上的所有应用程序都会获得相同的设备令牌,因此你所要求的是不可能的。从iOS7开始,每个应用程序都会获得自己的设备令牌,但我不确定该令牌在连续注册时是否会更改。
您始终可以通过调用registerForRemoteNotificationTypes强制调用didRegisterForRemoteNotificationsWithDeviceToken方法,但通常您将获得相同的设备令牌。

1
如果目标是将通知与特定用户关联,则从iOS 10开始,您可以尝试实现 NotificationService扩展,以仅过滤与当前经过身份验证的用户关联的那些通知。虽然同一设备上的多个用户将与服务器上的相同设备令牌相关联,但客户端仅显示当前用户的通知-假设一次只有一个用户可以登录。
此方法还允许具有不需要身份验证的通知-只需将其通过未更改即可。
如上所述,您可以通过显式调用UIApplication.shared.registerForRemoteNotification(Swift 3+)在用户登录后强制请求-响应令牌更新。然后将该用户+设备令牌组合发送到您的应用程序服务器供使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接