简短的问题:如何在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和amp; memcache)。因为我能找到的99%的资源都涉及单个推送通知,所以我希望我能在这里找到一些指导。我只是将每条消息添加到一个mysql表(队列)中,然后每隔x分钟,迭代它们并发送所有未发送的消息。
有没有人有任何可能有助于这种方法的示例/链接?
提前致谢。
答案 0 :(得分:2)
是的,你可以简单地继续附加消息。二进制协议格式特别需要严格的消息长度,因此可以将一个消息与下一个消息区分开来。理想情况下,你整天都会向Apple的服务器推送一个长二进制字符串。
批处理并不理想,您通常希望将其作为守护程序实现,该守护程序与APNs服务器保持开放连接,并根据需要将新消息写入连接。