通过 PHP 推送到多个 iOS 设备

Posted

技术标签:

【中文标题】通过 PHP 推送到多个 iOS 设备【英文标题】:Push to multiple iOS Devices via PHP 【发布时间】:2013-09-16 09:54:01 【问题描述】:

首先要说好话 - 我的代码正在运行。但不幸的是,要推送到许多设备时速度非常慢。由于之前一个设备因我的代码而失败(连接是在循环外建立的),整个推送过程都失败了,所以我在循环内建立了连接:

foreach ($deviceTokens as $token) 
  $fp = stream_socket_client($this->data['config']['push']['apnsAddress'], $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx);
  $msg = chr(0).pack('n', 32).pack('H*', $token).pack('n', strlen($payload)).$payload;
  $result = fwrite($fp, $msg);
  if (!$result) 
    $this->pushLog('devicetoken '.$token.' failed');
    $errors++;
  
  fclose($fp);

除了为每个安装了应用程序的人建立新连接之外,没有其他方法可以推送到多个设备吗?目前,此脚本的运行时间实在是太长了。

【问题讨论】:

【参考方案1】:

首先,我可以知道您要在循环中推送多少设备吗?对于合理数量的令牌,您拥有的代码应该可以正常工作。你的服务器到苹果的连接有多快?另一种方法是使用第三方推送 API。通常,它们提供扩展的参数和选项,其中肯定包括通过一次调用推送到多个设备。干杯。

【讨论】:

即使在 3 台设备的测试模式下也需要将近一秒钟。在实时模式下,我们谈论一千个设备。第三方解决方案不是我们的选择。 请看这个:***.com/questions/5050363/… 在这里找到了一个可行的解决方案:***.com/questions/10058768/… 虽然仍然不是一个漂亮的解决方案..

以上是关于通过 PHP 推送到多个 iOS 设备的主要内容,如果未能解决你的问题,请参考以下文章

Quickblox - 如何将通知推送到 Android 和 iOS 平台?

如何通过 mongoose 将多个数组元素推送到 mongodb

RabbitMQ消息队列-通过fanout模式将消息推送到多个Queue中

git 本地仓库同时推送到多个远程仓库

以编程方式验证 MDM 配置文件(配置)是不是已成功推送到 iOS 设备?

如何使用 GCM 和 java 向多个设备发送推送通知