iOS APNS:使用PHP创建推送通知队列

iOS APNS:使用PHP创建推送通知队列,php,ios,apple-push-notifications,Php,Ios,Apple Push Notifications,简短的问题:如何在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('

简短的问题:如何在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]
长版本:

因为苹果要求应用程序批处理推送通知(尽量减少到APN的几个连续连接),所以我正在尝试用PHP构建一些可以完成这项工作的东西(不使用PHP APNS库和memcache)。因为我能找到的99%的资源都是关于单个推送通知的,所以我希望能在这里找到一些指导。我只是简单地将每条消息添加到一个mysql表(队列),然后每隔x分钟,遍历它们并发送所有未发送的消息

是否有人有任何可能有助于此方法的示例/链接


提前感谢。

是的,您只需继续添加邮件即可。二进制协议格式特别要求严格的消息长度,因此可以区分一条消息和下一条消息。理想情况下,你可以整天把一个长的二进制字符串推送到苹果的服务器上


批处理并不理想,您通常希望将其实现为一个守护进程,保持与APNs服务器的开放连接,并根据需要将新消息写入连接。

Ahh我明白了。因此,这并不是说苹果喜欢同时发送多条信息,而是因为APNS连接本身并不经常连接和断开连接?@Chazbot说得对。在文档中的某个地方,它明确指出苹果将惩罚你过于频繁的断开/连接。我猜建立连接的开销要比推送的实际消息大得多,而保持空闲连接基本上是免费的。因此,如果您单独连接每条消息,您将消耗大量资源(顺便说一句,对于您自己也是如此)。