【问题标题】:How can I send push notification to multiple devices in one go in iPhone?如何在 iPhone 中一次性向多个设备发送推送通知?
【发布时间】:2011-06-30 08:07:39
【问题描述】:

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

我当前的 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);

【问题讨论】:

  • 您能否在每个代码行之前通过putting 4 whitespaces 更好地格式化您的代码?现在它不可读。
  • 我希望它现在可以阅读... :)
  • @Prabh -- 你能告诉我你如何解决这个问题的最终代码吗?我正在努力实现同样的目标——谢谢!
  • 嗨 Tamak,很久以前,所以我没有代码,但我当时使用 for 循环将味精发送到所有设备:(

标签: php iphone push-notification


【解决方案1】:

归根结底,你不能。您需要向每个令牌发送消息。

像电子邮件一样工作,您可以有多个收件人。

一旦连接打开,您就可以发送一堆消息,这也是首选方式(基于 Apples SDK)。

来自 SDK:

http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW2

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

【讨论】:

  • 这里是 PHP 新手,这是否意味着您创建一次连接,例如 $fp = stream_socket_client( 'ssl://gateway.push.apple.com:2195', $err, $errstr, 60 , STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);而你可以fwrite($fp, $msg); 多次(甚至 1000 次)?
  • 链接失效
【解决方案2】:

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

【讨论】:

  • Bolhoed,你能告诉我怎么做吗?
  • 只需在同一个连接上执行多个 fwrite。
  • 嗨@mixedCase 做多个fwrites(即100+)对我不起作用,他们中的许多人没有得到我的推动,这可能吗?如果发送推送的用户是 1000+,我应该做些什么吗?
  • 多次写入有效,但如果其中一个设备出错,苹果不会发送任何其他连接,如何处理? ...并且它不会终止连接,因此您不知道哪个是错误的
猜你喜欢
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
相关资源
最近更新 更多