【问题标题】:Apple Feedback Service (APNS) is slowApple 反馈服务 (APNS) 很慢
【发布时间】:2011-07-28 10:12:27
【问题描述】:

我使用 PHP 为 iPhone 应用程序编写了推送通知(APNS,Apple 推送通知服务)。一切正常,而没有从设备中删除任何应用程序。我使用 Apple 的 Feedback Service 确实获得了已删除的设备。如果我得到设备,我会在我的数据库中将它们标记为 INACTIVE,以便不再向这些设备发送推送通知。

问题是苹果速度很慢。如果您从设备中删除应用程序,则会向 Apple 发送请求,我会使用反馈服务收集设备。但 Apple 不会立即转发停用的设备,因此我收到以下错误,因为我无法向停用的设备发送推送通知:

PHP Warning: fwrite(): SSL: Broken pipe in apns.php on line 155

我的反馈服务脚本每 5 分钟运行一次,但 Apple 的更新每 10-15 分钟进行一次。如果我在 10-15 分钟内发送推送通知,则会出现上述错误,因为在数据库中设备仍被标记为 ACTIVE 而在 Apple 服务器上,设备被标记为 INACTIVE时间>。

连接到反馈服务或推送服务没有问题,但我并不总是从反馈服务获取设备。

您好, 狐狸

【问题讨论】:

  • 要么处理它,要么联系苹果支持。我们应该怎么做?

标签: php apple-push-notifications feedback


【解决方案1】:

来自 Apple.com 开发者论坛 (https://devforums.apple.com/thread/114446) 的回答:

您的服务器需要检测断开连接并在必要时重新连接。当涉及网络时,没有什么是“即时的”;总是有一些延迟,代码需要考虑到这一点。 此外,考虑使用增强的二进制接口,这样您就可以检查返回响应并了解连接断开的原因。连接也可能因 TCP keep-alive 而断开,这不在 Apple 的控制范围内。

所以如果服务器检测到断开连接,我会将所有设备设置为 INACTIVE

【讨论】:

  • 我还是不明白你在做什么。我在几千个推送通知中遇到了同样的错误。你是怎么解决的?
  • 当 Apple 的设备出现任何问题时,它们会关闭连接。您不会收到任何错误消息或类似的信息。如果您在设备上收到 SSL 错误,则您认为该设备不再处于活动状态。因此,您必须 (1) 将其设为非活动状态,并且 (2) 您必须重新连接到 Apple 服务器。当您发送数千个推送通知时,您可能会遇到数百个 SSL 错误(重新连接)。我知道,这个系统并不完美。而且我不知道为什么苹果让它变得如此棘手。
  • 是的,您必须管理导致 SSL 错误的 ID。您必须跳过该 ID。不要尝试将消息重新发送到该 ID。它行不通。您还必须以 5 到 15 分钟的间隔运行反馈服务​​。但反馈服务不是即时的。正如 Apple 开发者论坛所说:涉及网络时,没有什么是“即时的”。但这是主要问题:反馈服务将每 15 分钟更新一次(例如,我不知道确切的时间)。因此,在您这边,您每 15 分钟运行一次反馈服务脚本。
  • 但是在 15 分钟内,当反馈服务脚本没有运行时,人们也可以卸载你的应用程序。因此,您发送推送通知并收到错误消息,因为任何用户在 15 分钟内卸载了您的应用程序,您必须处理发送脚本,因为反馈服务脚本无效。
  • Omg .. 最后一个对我有很大帮助的答案。现在都想通了。你是一个救生员。 -1 表示苹果及其 apns 服务。顺便说一句,Android 做得更好(作为专业苹果用户和开发人员说)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
相关资源
最近更新 更多