我作为测试所做的是:
我制作了示例应用,我启用了推送通知并实现了处理它们的机制。
我正在测试使用curl
向我的应用发送无声推送通知,这非常有效。我正在测试:
curl -v -d' {" aps":{" content-available":1}}' --cert" /Users/me/Desktop/mycert.pem":"" -H" apns-topic:com.domain.name" --http2 https://api.development.push.apple.com/3/device/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
作为Apple的回答,我总是看到以下内容:
< HTTP / 2.0 200
< APNS-ID:XXXXXXXX-XXXXXXXX-XXXX-XXXXXXXXX
根据官方文档中Table 6-4
的说法,这是正常的和预期的一样:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/APNsProviderAPI.html
现在我从我的设备中删除了该应用,然后我重试相同的请求,希望我能开始获取状态代码410
和The device token is no longer active for the topic
的信息。然而,这并没有发生,我总是得到200
状态代码,就像一切都很好,并且推送令牌仍然可用。
删除后1 - 1.5小时,我仍然以200
作为答案。
您是否知道Apple刷新推送令牌列表的频率以及何时最终会开始获取410
?而且 - 在生产环境之外测试应用程序时,410
状态(和Instant Feedback
一般)是否可测试?
提前感谢任何答案。
干杯
答案 0 :(得分:5)
好的,从我发现的情况来看,似乎来自Apple的Instant Feedback
服务工作得很好,能够很快检测到卸载。如何使用沙盒服务正确测试这些东西有一个小技巧。
如果您制作的应用程序在您的设备上进行本地测试,并且您的应用是您配置文件(供应商)在手机上安装的唯一应用,那么我所面临的问题就是我的问题会遇到。出于某种原因,即使您卸载应用程序(这是从配置文件中安装的手机上唯一的应用程序),Apple总是以200响应。
需要做的是:在您安装正在测试的应用程序之后,创建一个带有另一个软件包ID的新虚拟应用程序,但也来自您的配置文件,同时在其中启用推送通知并安装它在你的设备上。所以现在,你有两个应用程序 - 一个是你正在开发和测试Instant Feedback
服务,另一个是有点" zombie"应用程序只是坐在那里,什么都不做。
在此之后,卸载您的测试应用,尝试发送无声推送通知,Apple将按预期响应status code 410
。
虚拟的方式,但由于某种原因,它在测试时应该如何。生产中的行为应该符合预期,并且不需要在iOS设备上安装来自同一供应商的虚拟(或任何其他)应用程序。