Voip 推送:在什么情况下会调用 didInvalidatePushTokenForType?

Voip Push: Under what circumstances does didInvalidatePushTokenForType get called?

didInvalidatePushTokenForType 的文档说它是可选的实现,也说了这个

This method is invoked if a previously provided push token is no longer valid for use. No action is necessary to request registration. This feedback can be used to update an app's server to no longer send push notifications of the specified type to this device.

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

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

感谢您提出很好的问题。

1)token什么时候失效?

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

  • 重新安装 OS 或更新 OS 或重置 iOS 设备然后 APNS 令牌确实发生变化(升级或降级 OS)。

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

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

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

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

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

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

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

中查找参考