iPhone 推送通知 - 错误响应问题

Posted

技术标签:

【中文标题】iPhone 推送通知 - 错误响应问题【英文标题】:iPhone Push Notification - Error response problem 【发布时间】:2010-10-27 15:29:59 【问题描述】:

发送推送通知后检查响应错误时遇到问题。这是我的设置:

我正在从我的 php 服务器发送推送通知。这些通知以增强格式发送,因此我可以从 Apple 服务器获得错误响应。例如:错误 #7“无效负载大小”。

我检查错误的方式是读取套接字响应:

const ERROR_RESPONSE_SIZE = 6;
$errorResponse = @fread($this->_apnsSocket, self::ERROR_RESPONSE_SIZE);

当存在实际错误时,这可以正常工作。我的问题是:当没有错误时,“fread”调用不会返回任何内容,并且会一直加载。

谁能帮我解决这个问题?感谢您的帮助!

【问题讨论】:

【参考方案1】:

您需要将stream_set_blocking($this->_apnsSocket, 0); 设置为 0,这是非阻塞模式,因为成功时 Apple 不会发回任何内容,但 fread 正在阻塞模式下等待数据。

【讨论】:

这将起作用,但它也会导致 fread 在错误有机会发送之前立即返回。因此,您可以做的是在完成发送所有推送通知后额外检查错误。发送所有推送,然后暂停半秒,然后再次使用 fread 检查最近发送的几个推送通知可能发生的任何错误。我对此进行了测试,导致发送的最后一条推送消息出现错误,然后暂停不同的时间长度(最多尝试 5 分钟),然后执行 fread 并且错误仍然存​​在等待读取。

以上是关于iPhone 推送通知 - 错误响应问题的主要内容,如果未能解决你的问题,请参考以下文章

iphone推送通知服务问题

phonegap 推送通知在 iPhone 上不起作用

passkit - 通过推送通知传递不刷新。 (服务器响应格式错误)

如果另一台设备已响应警报,则删除推送通知警报

无法在 iphone 4s 设备上获得推送通知

如何在 iPhone 中实现 Urban Airship 的推送通知?