所以,我在商店里有一个应用程序,我已经将它下载到我的手机上并获得了该设备的推送 token 。我测试了静默推送通知发送,确实有效,我的设备收到了它。
我想检查推送 token 失效后的时间。我做的第一件事就是简单地卸载了一个应用程序,然后开始注意 {"reason":"Unregistered","timestamp:1234567890}
到我的 curl
看起来像这样的请求:
curl -d '{"aps":{"content-available":"1"}}' --cert "/Users/uerceg/Desktop/ProductionCertForMyAppsPush.pem":"password" -H "apns-topic:com.my.app" --http2 https://api.push.apple.com/3/device/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
一旦我从我的设备上卸载了一个应用程序,它通常因情况而异(我猜反馈服务有某种我不太了解的 token 刷新逻辑,无论如何我也没有找到一些关于它的文档),但需要 3-12 分钟才能开始收到我的应用程序已卸载的信息。可爱。
在那之后,我想再测试一个案例 - 选择 Erase All Content and Settings
并完全清除我 iPhone 中的所有内容,之后不恢复任何备份。
一旦我这样做了,应用程序也会被删除。但是 curl
请求总是返回状态 200
。我等了 5 天,5 天后,它仍然返回 200
,就好像安装了应用程序一样,但我猜它不应该。删除所有内容后,我重新安装了我的应用程序,获得了新的推送 token ,我用它再次成功发送静默推送通知。
当然,如果我有机制来识别这个特定设备新安装了一个应用程序,我可以在后端更新 token ,不再向该设备发送通知,但我的问题仍然存在:为什么是苹果如果我通过删除和重置我的 iPhone 删除了我的应用程序,不会使 token 失效?
也许这是预期的行为,我的问题没有意义,但如果这是预期的行为,你能给我指出一些解释这个问题的文档吗?
提前致谢。
最佳答案
可能出于同样的原因,如果您对手机进行备份并从备份中恢复,现有的按键仍然有效。使正在删除的设备上的 key 失效将消除从备份中使用相同 key 的可能性。
关于删除 iPhone 后 iOS 推送 token 仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42921336/