【问题标题】:Obtain NEW Apple device token?获取新的 Apple 设备令牌?
【发布时间】:2014-07-31 14:54:13
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    不,您不能请求新的设备令牌。它们会不时过期,然后您才会获得一个新的(或者如果您有一个具有不同捆绑 ID 的不同应用程序,则令牌会有所不同)。

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

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

    【讨论】:

    • 每次有人登录时都将新令牌传递给服务器是不够的。您还需要在用户注销时从服务器中删除令牌。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        这种方法还允许拥有不需要身份验证的通知 - 只需将它们原封不动地通过即可。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-07
          • 1970-01-01
          • 1970-01-01
          • 2017-02-22
          • 2012-12-15
          • 2012-10-02
          • 1970-01-01
          相关资源
          最近更新 更多