【问题标题】:iOS APNS: Creating a Push Notification Queue w/ PHPiOS APNS:使用 PHP 创建推送通知队列
【发布时间】:2011-07-08 22:54:42
【问题描述】:

简短的问题:如何在 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 库和内存缓存)。因为我能找到的 99% 的资源都与 single 推送通知有关,所以我希望能在这里找到一些指导。我只是将每条消息添加到一个 mysql 表(队列)中,然后每 x 分钟,遍历它们并发送所有未发送的消息。

有没有人有任何示例/链接可能有助于这种方法?

提前致谢。

【问题讨论】:

    标签: php ios apple-push-notifications


    【解决方案1】:

    是的,您可以简单地继续附加消息。二进制协议格式特别要求严格的消息长度,以便可以将一条消息与下一条消息区分开来。理想情况下,您会整天将一个长二进制字符串推送到 Apple 的服务器。

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

    【讨论】:

    • 啊,我明白了。因此,并不是 Apple 更喜欢同时发送多条消息,而是 APNS 连接本身并不经常连接+断开连接?
    • @Chazbot 对。在文档中的某处,它明确指出 Apple 会因您过于频繁地断开/连接而对您进行处罚。我想建立一个连接的开销比实际推送的消息要多得多,而保持空闲连接打开基本上是免费的。因此,如果您为每条消息单独连接,您将消耗大量资源(顺便说一句,对于您自己也是如此)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2013-06-10
    相关资源
    最近更新 更多