EasyAPNS 发送消息但在 iOS 设备上未收到

Posted

技术标签:

【中文标题】EasyAPNS 发送消息但在 iOS 设备上未收到【英文标题】:EasyAPNS delivered the message but not received on iOS device 【发布时间】:2013-07-08 22:47:00 【问题描述】:

我使用EasyAPNS 作为 php 服务器脚本向 ios 设备发送推送通知。

它在使用 Apple Development 推送通知证书的开发中完美运行,但是当切换到 Distribution 时,它会将消息设置为“已发送”,但从未在从下载的 iOS 设备上收到应用商店!

我已经使用Script 测试了 Apple Distribution 推送通知证书以及我从 App Store 下载的应用程序,它运行良好!所以问题不是来自我的分发证书,也不是来自我的应用程序,而是在 EasyAPNS 脚本和设置中的某个地方,但我不知道它在哪里以及如何解决它!

【问题讨论】:

您是否使用了 Ad-Hoc Distribution Provisioning 配置文件和生产 APNS 证书?也可以试试 APNSPHP,它比这个小脚本更高级。 github.com/duccio/ApnsPHP 【参考方案1】:

检查您是否使用正确的服务器。

在您使用该脚本进行测试时,是否将 development 设置为 false?或 true 取决于您使用的示例。检查其中任何一个是否导致正确使用生产服务器。

$development = true; // boolean

【讨论】:

【参考方案2】:

我找到了血腥的原因:)

apns_messages.message列的payload由于使用了长消息,没有作为完整的payload格式插入,所以message字段的内容如下:

"aps":"alert":"\u064a\u0627 \u0639\u0644\u064a \u0623\u0646\u062a \u0627\u0644\u0648\u0644\u064a \u064a\u0627 \u0639\u0644\u064a \u0623\u0646\u062a \u0627\u0644\u0648\u0644\u064a \u064a\u0627 \u0639\u0644\u064a \u0623\u0646\u062a \u0627\u0644\u0648\u064

所以我所做的更改是确保使用非常短的消息来确保 EasyAPNS 在apns_messages.message 列中插入完整的有效负载消息格式,因此该字段的内容如下所示:

"aps":"alert":"\u064a\u0648\u062c\u062f \u0625\u0639\u0644\u0627\u0646 \u062c\u062f\u064a\u062f \u0645\u0646 \u062e\u062f\u0645\u0629 \u0628\u0644\u063a\u0646\u064a","badge":5,"sound":"alarm.caf","module":"messages","id":"28"

【讨论】:

以上是关于EasyAPNS 发送消息但在 iOS 设备上未收到的主要内容,如果未能解决你的问题,请参考以下文章

Android GCM 发送成功但在某些设备上未收到

Worklight 6.2:成功发送标签推送通知,但在 android 设备上未收到

通过cURL / PHP发送时,设备上未收到Firebase通知

从 appery 发送时,iPhone 上未收到推送通知消息

iOS 设备上未显示开发人员菜单

设备上未收到 iOS 推送通知