具有用于推送通知的用户上下文的设备令牌的生命周期

use*_*285 5 lifecycle apple-push-notifications devicetoken ios

我知道以下问题与代码没有直接关系,但我们确实需要一些有关推送通知最佳实践的输入。

我们目前正在构建一个聊天应用程序,该应用程序使用推送通知来通知用户有新消息可用。这不是什么新鲜事,也不是什么奇特的东西……我们也已经有了允许我们做到这一点的代码:

  • 在设备启动时应用程序请求设备令牌
  • 获取设备令牌
  • 向推送服务器注册
  • 完成并且有效

然而,我的问题是当应用程序用户上下文发生变化时该怎么办。例如:

  1. 用户A登录应用程序,接收设备令牌,注册设备
  2. 用户A注销
  3. 用户 B 在同一设备上登录应用程序,获取相同的设备令牌,再次注册设备,但设备已知。

目前我们遇到的问题是,应用程序仍然收到来自用户 A 的推送通知,因为推送服务器认为该设备仍在用户上下文 A 下。

当然,我们可以实现一个注销功能,在注销时删除设备,但如果应用程序被删除并重新添加,会发生什么情况。例如:

  1. 用户 A 记录并接收推送通知
  2. 用户 B 删除同一设备上的应用
  3. 用户B再次下载应用程序并获取设备令牌

此时,即使没有用户登录,设备也会再次收到来自用户 A 的推送通知。

在我看来,我们在思考中错过了关键的一步,但我们不知道那是什么……我们不能请求新的设备令牌。

提前致谢