PHP Apple Push Notifications 反馈服务

Posted

技术标签:

【中文标题】PHP Apple Push Notifications 反馈服务【英文标题】:PHP Apple Push Notifications feedback service 【发布时间】:2012-04-09 01:37:49 【问题描述】:

我想知道,当您从 Apple 的推送反馈服务中获得令牌列表时,这些令牌是否仅特定于发出呼叫的应用程序(使用该应用程序的 pem 证书),还是苹果会向您发回所有令牌您的应用在同一帐户下有应用 ID?

我问的原因是我有一个脚本可以检查反馈服务,以便它可以在发送推送之前删除令牌。我复制了脚本并将其设置在我的新应用程序的新子目录中,并更改了所有适当的数据库信息并为这个新应用程序创建了新的 pem 文件。

由于这是一个新应用程序,数据库中只有一个令牌,我还没有发送任何推送,但是当我运行脚本时,反馈服务报告了 1200 个需要删除的令牌。由于我没有预料到这一点,我只检查了从数据库中删除这个应用程序的这些令牌,而不是从其他应用程序中删除。

我很困惑,因为 Apple 开发者页面上写着“为此目的,Apple 推送通知服务包括一个反馈服务,该服务 APN 会不断更新每个应用程序列表交付失败的设备尝试”,这让我相信我应该只在每个应用程序而不是所有应用程序的基础上获得令牌。

任何人都可以确认或否认反馈服务如何与多个应用程序一起工作,这样我就可以找出我的问题出在哪里(如果我有一个)?

谢谢

【问题讨论】:

你确定你在那里使用不同的证书吗? 我创建了新的并删除了旧的(我认为)...如果我使用旧的证书,那么它将检索其他应用程序的反馈是否正确?但现在的问题是,一旦你从苹果那里得到反馈,它就不再存在了,所以我无法测试这是否是我的问题! 你有没有得到任何关于这个问题的信息? @DanielMagnusson 不,我还没有确认反馈服务是否只返回一个应用程序或所有应用程序的这些令牌。 到目前为止,Apple 对我的回应是“阅读文件”,我回答说“我有,但它没有回答我的问题”.. 仍在等待他们的回复。跨度> 【参考方案1】:

我找到了一些关于此的信息:

APNS 反馈服务器仅返回自您上次请求反馈以来已“过期”的设备令牌。

source

这意味着如果你发送到你的几个应用程序,那么在向苹果推送 X 次之后,调用 feedback() 然后 feedback() 将有来自你所有应用程序的非活动令牌。

我目前的解决方案是在每次推送到苹果后调用反馈。 现在已经足够了 ©

【讨论】:

我实际上做了两次检查……一次在推送之前,一次在推送之后。但是我仍然不清楚它是否会返回您开发者帐户中所有应用程序的所有过期令牌,或者仅返回用于连接证书的应用程序的所有过期令牌。 我们是否得到了一些有效载荷的标识符来确定哪个通知失败了?【参考方案2】:

好吧,在给苹果发了一封邮件并等待了大约 2 周后,我终于得到了他们的以下回复:

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

因此,正如您必须为每个应用建立与 APN 的单独连接以发送通知一样,您也必须为反馈服务执行相同的操作。

因此,您允许为每个应用单独连接到反馈服务。

【讨论】:

以上是关于PHP Apple Push Notifications 反馈服务的主要内容,如果未能解决你的问题,请参考以下文章

PHP Apple Push Notifications 反馈服务

使用 PHP 的 Apple Push Notification,iphone 没有收到,有啥可能导致这种情况发生?

Apple Push Notification 在共享服务器上不起作用

使用 EasyApns 添加推送通知

推送包签名验证失败 - Safari Push

不能远程登录 gateway.sandbox.push.apple.com 2195?