PHP:如何向 Apple 设备发送推送通知

Posted

技术标签:

【中文标题】PHP:如何向 Apple 设备发送推送通知【英文标题】:PHP: how to send push notifications to Apple device 【发布时间】:2016-03-25 11:32:39 【问题描述】:

我们的 ios 应用应该会收到推送通知。按照this 教程,我在应用程序委托中实现了这些方法:

didRegisterForRemoteNotificationsWithDeviceToken

didFailToRegisterForRemoteNotificationsWithError

didFinishLaunchingWithOptions 调用,似乎该设备已在我们的 mysql 服务中正确注册。此外,我刚刚创建了一个用于测试的 pem 沙盒认证。现在,我需要知道我应该在 php 的后端做什么。需要哪个代码?我们正在使用 Zend 框架,所以我应该在我的映射器中实现function preparetosend_apple(),在我们的控制器中实现sendtoappleAction(),但我不知道从哪里开始以及如何测试它。谢谢!

【问题讨论】:

framework.zend.com/manual/1.12/en/zend.mobile.push.apns.html 谢谢老哥,我去看看! 【参考方案1】:

第一件事是直接从应用程序发送推送通知不是一个好主意,因为此调用可能会阻塞一个调用(意味着代码块的其余部分将等待其完成)。所以我建议使用后台处理器/消息队列服务(如 gearman、zero mq 等)。

第二个最简单的解决方案是使用类似Parse 的服务。 Parse 允许使用您提到的证书注册应用程序,并具有适用于 php 的 SDK(基于作曲家)。

在后台服务中,您只需从 SDK 调用 API。喜欢:

use Parse\ParseClient;
use Parse\ParseInstallation;
use Parse\ParsePush;

ParseClient::initialize($appId, $restKey, $masterKey, $curlDebug);
...
...
...

在解析中使用通道

$response = ParsePush::send(array(
                            "channels" => ["channel-$userId"],
                            "data"     => $data,
                           ));

或者使用自定义查询

$query = ParseInstallation::query();
$query->equalTo('userId', "user-$userId");

$response = ParsePush::send(array(
                            "where" => $query,
                            "data"  => $data,
                           ));

使用解析的最佳部分 - 我会说使用其他有趣的功能,例如广播消息、设备列表等。

希望对您有所帮助。

【讨论】:

以上是关于PHP:如何向 Apple 设备发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何向 Apple 和 Android 发送推送通知?

Web 应用程序如何向 iOS 设备发送推送通知? [关闭]

向 iOS 测试设备发送推送通知时出现 PHP 错误

如何向 Azure 通知中心注册的每个设备发送不同的推送通知?

iphone推送通知服务问题

如何在一个请求中向多个设备(iOS)发送推送通知?