Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 苹果反馈服务(APNS)速度慢_Php_Apple Push Notifications_Feedback - Fatal编程技术网

Php 苹果反馈服务(APNS)速度慢

Php 苹果反馈服务(APNS)速度慢,php,apple-push-notifications,feedback,Php,Apple Push Notifications,Feedback,我用PHP为iPhone应用程序编写了推送通知(APNS,Apple推送通知服务)。当没有从设备上删除应用程序时,一切正常。我使用苹果公司的反馈服务来获取被删除的设备。如果我得到设备,我会在数据库中将它们标记为非活动,以不再向这些设备发送进一步的推送通知 问题是苹果的速度很慢。如果您从设备中删除应用程序,将向Apple发送请求,我将使用反馈服务收集设备。但是苹果没有立即转发停用的设备,因此我收到以下错误,因为我无法向停用的设备发送推送通知: PHP警告:fwrite():SSL:apns.PHP

我用PHP为iPhone应用程序编写了推送通知(APNS,Apple推送通知服务)。当没有从设备上删除应用程序时,一切正常。我使用苹果公司的反馈服务来获取被删除的设备。如果我得到设备,我会在数据库中将它们标记为非活动,以不再向这些设备发送进一步的推送通知

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

PHP警告:fwrite():SSL:apns.PHP第155行的管道破裂

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

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

问候,
TheFox

苹果开发者论坛的答案(https://devforums.apple.com/thread/114446):

您的服务器需要检测断开连接,并在必要时重新连接。当涉及网络时,没有什么是“即时的”;总有一些延迟,代码需要考虑到这一点。 此外,考虑使用增强型二进制接口,这样您就可以检查返回响应并知道连接为何被丢弃。TCP保持活动也可能导致连接中断,这不在苹果的控制范围之内


因此,如果服务器检测到断开连接,我会将所有设备设置为非活动状态。

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

您的服务器需要检测断开连接,并在必要时重新连接。当涉及网络时,没有什么是“即时的”;总有一些延迟,代码需要考虑到这一点。 此外,考虑使用增强型二进制接口,这样您就可以检查返回响应并知道连接为何被丢弃。TCP保持活动也可能导致连接中断,这不在苹果的控制范围之内


因此,如果服务器检测到断开连接,我会将所有设备设置为非活动状态。

要么处理,要么联系苹果支持部门。我们应该怎么做?要么处理它,要么联系苹果的技术支持。我们该怎么办?我还是不明白你在做什么。我有几千推送通知相同的错误。你是如何修复的?当苹果的设备出现问题时,他们会关闭连接。您不会收到任何错误消息或类似的消息。如果设备上出现SSL错误,则假定该设备不再处于活动状态。因此,您必须(1)将其禁用,(2)必须重新连接到Apple服务器。当您发送数千个推送通知时,可能会出现数百个SSL错误(重新连接)。我知道,这个系统并不完美。我也不知道为什么苹果会让它变得如此棘手。是的,你必须管理给你一个SSL错误的ID。您必须跳过该ID。不要尝试将邮件重新发送到该ID。它将不起作用。您还必须以5到15分钟的间隔运行反馈服务。但反馈服务不是即时的。正如苹果开发者论坛所说:当涉及网络时,没有什么是“即时”的。但这是主要的问题:反馈服务将每15分钟更新一次(例如,我不知道确切的时间)。因此,在你这边,你每15分钟运行一次反馈服务脚本。但在15分钟内,当反馈服务脚本未运行时,人们也可以卸载你的应用程序。因此,您发送了一个pushnotification,您会收到一个错误,因为任何用户都在15分钟内卸载了您的应用。您必须处理发送脚本,因为反馈服务脚本无效。Omg。。最后一个答案对我帮助很大。现在一切都搞定了。你是个救生员-苹果公司及其apns服务为1。安卓做得更好顺便说一句(作为一个苹果的专业用户和开发者)我还是不明白你在做什么。我有几千推送通知相同的错误。你是如何修复的?当苹果的设备出现问题时,他们会关闭连接。您不会收到任何错误消息或类似的消息。如果设备上出现SSL错误,则假定该设备不再处于活动状态。因此,您必须(1)将其禁用,(2)必须重新连接到Apple服务器。当您发送数千个推送通知时,可能会出现数百个SSL错误(重新连接)。我知道,这个系统并不完美。我也不知道为什么苹果会让它变得如此棘手。是的,你必须管理给你一个SSL错误的ID。您必须跳过该ID。不要尝试将邮件重新发送到该ID。它将不起作用。您还必须以5到15分钟的间隔运行反馈服务。但反馈服务不是即时的。正如苹果开发者论坛所说:当涉及网络时,没有什么是“即时”的。但这是主要的问题:反馈服务将每15分钟更新一次(例如,我不知道确切的时间)。因此,在你这边,你每15分钟运行一次反馈服务脚本。但在15分钟内,当反馈服务脚本未运行时,人们也可以卸载你的应用程序。因此,您发送了一个pushnotification,您会收到一个错误,因为任何用户都在15分钟内卸载了您的应用。您必须处理发送脚本,因为反馈服务脚本无效。Omg。。最后一个答案对我帮助很大。现在一切都搞定了。你是个救生员-苹果公司及其apns服务为1。顺便说一句,安卓做得好得多(作为一个亲苹果的用户和开发者)