所以,我在商店里有一个应用程序,我已经在手机上下载了它,并获得了该设备的推送令牌。我测试了无声推送通知发送,实际上,它可以工作,我的设备收到它。
我想查看推送令牌失效后的时间。我做的第一件事就是卸载了一个应用程序并且正在关注,之后我将开始{"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
一旦我从我的设备上卸载了一个应用程序,它通常因具体情况而异(我猜反馈服务有某种令牌刷新逻辑我还没有真正意识到,也没有找到一些关于它的文档,无论如何),但是需要3-12分钟才能开始接收我的应用程序已卸载的信息。可爱。
之后,我想测试另外一个案例 - 选择Erase All Content and Settings
并完全删除iPhone中的所有内容,而不会在之后恢复任何备份。
一旦我这样做,app也会被移除。但curl
请求始终返回状态200
。我等了5天,5天之后,它仍然在返回200
,好像安装了应用程序,但我的猜测是它不应该。擦除所有内容后,我新安装了我的应用程序,获得了新的推送令牌,我用它来成功再次发送静默推送通知。
当然,如果我有机制来识别这个特定设备新安装的应用程序,我可以更新后端的令牌,不再向该设备发送通知,但我的问题仍然存在:为什么是Apple如果我通过删除和重置我的iPhone删除了我的应用程序,那么令牌无效?
也许这是预期的行为,我的问题没有意义,但如果是预期的行为,你能指点一些解释这个问题的文件吗?
提前致谢。
答案 0 :(得分:1)
可能出于同样的原因,如果您备份手机并从备份恢复,现有的推送键仍然有效。在要擦除的设备上使密钥失效将会消除备份中可能使用相同密钥的可能性。