【问题标题】:Voip Push: Under what circumstances does didInvalidatePushTokenForType get called?Voip Push:在什么情况下会调用 didInvalidatePushTokenForType?
【发布时间】:2017-10-27 14:26:50
【问题描述】:

didInvalidatePushTokenForType 的文档说它是可选的实现并且也说这个

如果先前提供的推送令牌为否,则调用此方法 使用有效期更长。请求注册无需任何操作。 此反馈可用于更新应用的服务器以不再发送 将指定类型的通知推送到此设备。

为什么会有人不想实现这个呢?如果令牌不再有效,则服务器将永远无法再次向该设备发送 Voip 推送,因此手机上的应用程序是否不想尽快知道其是否无效,以便可以向该设备发送新令牌服务器?

我一直在尝试搜索信息和使用 didInvalidatePushTokenForType() 但似乎每个人都只是将此方法复制并粘贴到他们的源代码中,因为其他人都复制并粘贴了它。但似乎没有人用它做任何事情。 但似乎喜欢它应该是一个至关重要的方法来使用,那么为什么显然没有人呢? 令牌什么时候会失效?

【问题讨论】:

标签: ios pushkit


【解决方案1】:

感谢您提出了很好的问题。

1) 令牌何时会失效?

  • 如果我们从 App Store 更新应用程序,则 APNS 令牌不会更改。

  • 重新安装操作系统或更新操作系统或重置 iOS 设备,然后 APNS 令牌会更改(升级或降级操作系统)。

  • 设备令牌在 2 年后失效或过期。

  • 如果我重新安装应用程序,iOS9 和更高版本的设备令牌会发生变化。(根据我的经验和知识)。

  • 从 App Store 下载应用程序,然后使用 X-Code 运行您的代码,在这种情况下,设备令牌会发生变化。

2) didInvalidatePushTokenForType() 的重要或为什么? didInvalidatePushTokenForType() 是可选的

让我们澄清一下didInvalidatePushTokenForType() 方法。

一旦令牌被更改然后调用didInvalidatePushTokenForType()didUpdatePushCredentials() 方法,所以所有代码都放在didUpdatePushCredentials() 而不是didInvalidatePushTokenForType()

这就是开发者不重视didUpdatePushCredentials() 方法的原因。

Here查找参考

【讨论】:

  • 如果更新操作系统时APNS令牌失效,那么如果在操作系统更新后应用程序尚未运行之前服务器向应用程序发送voip推送会发生什么?如果令牌现在无效,服务器将不知道这一点,并且应用程序尚未运行,因此它无法检测到它是无效的并将新的令牌发送到服务器。
  • 显然应用程序没有收到任何带有旧 APNS 令牌的通知。 APNS 令牌更新到服务器后,应用开始接收通知。
  • 这就是我的观点。如果在令牌可以更改的所有情况下,应用程序都无法运行,那么如何调用此方法?
  • @Gruntcakes 没有办法克服上述问题。此外,在极少数情况下(设备令牌在 2 年后失效或过期)会重现此问题。在 iOS 9 之后,Apple 团队也试图克服这个问题
猜你喜欢
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 2012-04-23
  • 2011-10-16
相关资源
最近更新 更多