【发布时间】:2010-04-06 10:02:10
【问题描述】:
我正在使用 PHP 连接到 apns 以向多个设备发送一些通知,尽管这个问题更具概念性,因此不必特定于 PHP。
我将同时发送到大约 7000 台设备(并且还在不断增加)。 我的进程每天运行一次并向所有设备广播,因此我不会经常重新打开连接。
目前我可以轻松地一次发送到 2 个设备,并且消息将成功传递。 但是,当我尝试发送到全部 7000 台设备时,消息似乎没有传递。
我的代码的伪逻辑是:
open connection to apple
loop over device-tokens
write to socket connection per device
end loop
close connection to apple.
我在某处看到我应该只执行一次写入,并构造一个巨大的主体,换句话说,伪代码如下所示:
loop over device tokens
create payload aggregating all devices
end loop
open connection to apple
write to socket ONCE with whole payload for 7000 devices
close connection
这很难测试,因为我显然不能向我的 7000 名生产用户发送测试消息。 有没有其他人遇到过类似的问题?
谢谢
【问题讨论】:
-
你有没有得到这个工作?我很快就会编写一个面临同样问题的应用程序——通过 APNS 向成千上万的客户广播。
-
嗨,迈克。是的,我做到了。我发布此问题时的实施处于相当早期的阶段。问题是我在与生产设备相同的表中有一些沙盒设备。如果您在使用生产证书时发送到沙盒 device_token,Apple 有时会断开连接。因此,简单的解决方案是验证写入连接的字节数是否正确,并且在每次写入事件后连接没有断开。如果它掉线,您必须重新打开连接并从中断处继续。祝你好运!
-
仅供参考,您可以打开连接并执行任意数量的写入操作。只需确保在每次写入后检查连接状态
-
是否可以将推送消息广播到多个设备?我可以像你上面提到的那样聚合令牌并向所有设备发送一条消息吗?
-
呃,是的,这正是我在上面所做的。我在数据库表中收集所有令牌,然后每周一次向所有设备发送相同的消息(甚至可以为每个设备自定义消息。不过,您必须向每个设备的 APNS 发送单独的有效负载。所以如果您有 100 台设备,即 100 次写入套接字
标签: php iphone notifications push apple-push-notifications