Php 如何在iPhone中一次性向多个设备发送推送通知?

Php 如何在iPhone中一次性向多个设备发送推送通知?,php,iphone,push-notification,Php,Iphone,Push Notification,我想将相同的消息发送到所有已注册应用程序的设备,但如何在不建立多个连接的情况下发送它们 我当前的PHP代码: ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREA

我想将相同的消息发送到所有已注册应用程序的设备,但如何在不建立多个连接的情况下发送它们

我当前的PHP代码:

ctx = stream_context_create();  
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');  
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);  
if (!$fp)
{
  print "Failed to connect $err $errstr\n";
  return;
}
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
fwrite($fp, $msg);

您可以使用一个连接发送多条消息,因此不需要打开多个连接。您不能对多个设备使用一条消息。

底线是,您不能使用一条消息。您需要向每个令牌发送消息

它不像电子邮件那样可以有多个收件人

一旦连接打开,您就可以发送大量消息,这也是首选的方式(基于苹果SDK)

从SDK:

您还应该跨多个通知保留与APN的连接。APNs可以考虑快速且重复地建立和拆除拒绝服务攻击的连接。发生错误时,APNs将关闭发生错误的连接


你能在每行代码之前把你的代码格式化一点吗?现在它不可读。我希望它现在可读…:)@Prabh--你能告诉我你是如何解决这个问题的最终代码吗?我也在努力实现同样的目标——谢谢!嗨,Tamak,很久以前,所以我没有代码,但我当时使用for loop向所有设备发送消息:(Bolhoed,你能告诉我怎么做吗?只需在同一个连接上执行多个fwrite。Hi@mixedCase执行多个fwrite(即100+)没有为我工作,他们中的许多人没有得到我的推送,这是可能的吗?如果发送推送的用户是1000+,我应该做些什么吗?多个写入工作,但如果其中一个设备是错误的,苹果将不会发送任何其他连接,如何处理它?…它不会终止连接,所以你不知道哪一个是错误的PHP在这里是新的,是吗这意味着您只需创建一次连接,就像$fp=stream\u socket\u client('ssl://gateway.push.apple.com:2195“,$err,$errstr,60,STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT,$ctx);虽然您可以
fwrite($fp,$msg);
多次(甚至1000次)?链接已失效