简短的问题:如何构造PHP中的多个推送通知的传递?具体来说,如何将多个推送通知消息打包到单个fwrite()调用中?
我可以简单地继续将更多消息/有效负载附加到$ apnsMessage字符串吗?:
// [connect to service]
// Packing the payload (for a single message)
$apnsMessage = chr(0) . chr(0) . chr(32);
$apnsMessage .= pack('H*', str_replace(' ', '', $recipientToken));
$apnsMessage .= chr(0) . chr(strlen($payload)) . $payload;
// Write the payload to the APNS
fwrite($apns, $apnsMessage);
// [close connection to service]
长版:
因为Apple要求应用程序对推送通知进行批处理(以最小化与APNS的多个连续连接),所以我试图在PHP中构建可以完成此工作的东西(不使用php-apns lib和memcache)。因为我可以找到的99%的资源都与单个推送通知有关,所以我希望可以在这里找到一些指导。我只是将每条消息添加到mysql表(队列)中,然后每隔x分钟,遍历它们并发送所有未发送的消息。
有没有人有任何示例/链接可以帮助这种方法?
提前致谢。
最佳答案
是的,您可以简单地继续添加消息。二进制协议格式特别要求严格的消息长度,因此可以区分一行消息和另一条消息。理想情况下,您应该整天将一个长的二进制字符串推入Apple的服务器。
批处理并不理想,您通常希望将其实现为守护程序,该守护程序保持与APNs服务器的开放连接,并根据需要向连接写入新消息。