PHP 苹果推送通知反馈服务

4
我想知道从苹果的推送反馈服务获取到的令牌列表,是否只特定于调用该应用程序(使用该应用程序的pem证书)或者苹果将向您发送所有帐户下具有应用程序ID的应用程序的令牌?
我这样问是因为我有一个脚本,它检查反馈服务以便在发送推送之前删除令牌。我复制了该脚本,并在我的新应用程序的新子目录中进行了设置,并更改了所有适当的数据库信息并创建了新的pem文件。
由于这是一个新应用程序,数据库中只有一个令牌,我还没有发送任何推送,但是当我运行脚本时,反馈服务报告需要删除的1200个令牌。由于我没有预料到这一点,我只检查了该应用程序的数据库以删除那些令牌,而不是其他应用程序的数据库。
我感到困惑,因为Apple Developer页面说:“为此,Apple Push Notification Service包括反馈服务,APNs会不断更新其中的设备列表,以列出无法投递的设备的每个应用程序”,这让我相信我应该只能按应用程序获取令牌,而不是所有应用程序。
是否有人可以确认或否认反馈服务如何处理多个应用程序,以便我可以找出我的问题(如果有的话)?
谢谢。

你确定你在那里使用了不同的证书吗? - deceze
我创建了新的并删除了旧的(我想是这样)...如果我使用旧证书,那么它会正确地检索其他应用程序的反馈吗?但现在的问题是,一旦你从苹果得到反馈,它就不再存在了,所以我无法测试看看那是否是我的问题! - jsherk
你有关于这个问题的任何信息吗? - Daniel Magnusson
@DanielMagnusson 我还没有确认反馈服务是否仅返回一个应用程序的那些令牌,还是所有应用程序的令牌。 - jsherk
苹果公司迄今对我的回应是“阅读文档”,我回复说“我已经阅读了,但它并没有回答我的问题”... 我仍在等待他们的回复。 - jsherk
2个回答

2

发送电子邮件到苹果后等待了大约两周,我终于收到了以下回复:

连接反馈服务使用与连接APNs网关相同的TLS/SSL身份验证(证书和私钥)。 APNs通过证书的UserID属性来识别您希望通信的应用程序。

因此,就像您必须为每个应用程序建立单独的连接以发送通知一样,您必须对反馈服务执行相同的操作。

所以,您需要为每个应用程序建立到反馈服务的单独连接。


2
我找到了一些关于这个的信息:
引用: APNS反馈服务器只会返回自上次反馈请求以来“过期”的设备令牌。 来源 这意味着,如果您向多个应用程序发送推送通知,然后在向苹果发送X条推送通知后调用feedback(),那么feedback()将具有来自所有应用程序的无效令牌。
我的当前解决方案是在每次向苹果发送推送通知后调用feedback()。现在足够好了。

我实际上进行了两次检查...一次是在推送之前,另一次是在推送之后。但我仍然不确定它是否清楚地返回您开发者帐户中所有应用程序的所有过期令牌,还是仅返回用于连接的证书的应用程序的所有过期令牌。 - jsherk
我们能否获取某个标识符来确定哪个通知失败了? - Kunal Balani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接