php - APNs Provider API 批量请求

标签 php ios curl push-notification apple-push-notifications

我准备用 PHP 重写我的推送服务以使用新的 APNs Provider API。 我的问题是,是否有将一个通知发送到多个设备的最佳实践...

我已经找到了用 PHP 发送推送通知的解决方案:

$ch = curl_init("https://api.development.push.apple.com/3/device/$device_token");
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"aps":{"alert":"Here I am","sound":"default"}}');
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("apns-topic: $apns_topic"));
curl_setopt($ch, CURLOPT_SSLCERT, $pem_file);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $pem_secret);
$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

但使用此代码我可以将消息发送到一台设备,因为我必须将设备 token 放在 URL 中。但我想将消息发送到未知数量的设备。不幸的是,我找不到用于向多个设备发送消息的端点。


Apple 文档 ( https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/APNsProviderAPI.html ) 是这样说的:

在多个通知中保持与 APNs 的连接;不要反复打开和关闭连接。 APNs 将快速连接和断开连接视为拒绝服务攻击。

所以我认为将我的 CURL 请求 放入 for-loop 并循环遍历我的所有设备 token 是一种不好的做法。

有人对如何解决这个案子有什么建议吗?

提前致谢。

最佳答案

不确定 curl,但一般来说,Apns 提供者必须保持与 Apns Cloud 的持久连接。无法使用单个消息向多个设备广播。 Apns 提供者应利用 http/2(每个连接多个流)并且还可以跨多个连接发送消息,但不得在循环中进行连接和断开连接,这将被视为 DoS 攻击。

避免连接循环,你应该在循环中发布消息,连接/断开部分不能是循环的一部分。

希望对你有帮助。

问候, _阿尤什

关于php - APNs Provider API 批量请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38405706/

相关文章:

ios - 布局 UIView 而不将其添加到 subview

laravel - 入口 API {"error_message":"You must support\u0027gzip\u0027 to use F13"}

ios - 本地通知 15 分钟间隔问题

php - 使用 session 显示特定组的文本

php - 从 PHP/SQLite 中的查询返回字符串

php - 直接在 PHP CLI 和 MySQL 中运行时,数据库查询返回不同的结果

javascript - 如何获得用户偏好的单位?米或英里

php - cURL 命令不适用于 ssl

php - AWS SignatureDoesNotMatch 错误但签名代码和 key 对似乎都有效

php - 外部服务器上的关系表上的 Laravel where() 和 orderBy()