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 推送通知 - 错误响应问题的主要内容,如果未能解决你的问题,请参考以下文章