【问题标题】:Push notification is not being delivered when iPhone comes back onlineiPhone 重新联机时未发送推送通知
【发布时间】:2014-06-03 23:18:42
【问题描述】:

我正在为我们的 iPhone 应用测试 Apple 推送通知。应用部署目标是 6.1,iPhone 运行的是 7.1.1。我们使用 Apigee 作为我们的推送通知提供商。手机通过蜂窝网络和 wi-fi 在线时会收到通知,确认在应用程序端和 Apigee 端的注册是正确的。我打开飞行模式,从 Apigee 推送通知,等待 3 分钟,将手机退出飞行模式,手机从未收到推送通知。我等待几分钟(最多 30 分钟),然后从 Apigee 推送另一个通知,手机会收到通知。

我读过 Apple 的 Local and Push Notification Programming GuideTechnical Note TN2265 Troubleshooting Push Notifications

根据故障排除指南,“由于您的设备未连接到服务,任何未立即发送的推送通知都将排队等待将来重新发送。“立即”当然需要考虑您的连接延迟。外围案例将超过 60 秒,因为此时 APN 将超时。”这就是我等待 3 分钟的原因。我也知道 APNS 将一条消息排队,我想我知道我没有覆盖该消息 - 除非 APNS QoS 队列的延迟/吞吐量比几分钟差得多。

在 Apigee 的“消息历史记录”中,我看到了手机离线时发送的通知。它的状态为已完成,发送总数:1,错误总数:0。我还在数据/收据下看到收据。这似乎表明 Apigee 已成功将通知发送到 APNS(但我不是 100% 确定)。我验证了来自 Apigee 的 notifierId 对于在线和离线时发送的所有通知都是相同的。

我可以使用什么技术来查看为什么没有从 APNS 传递通知?还有什么我可以检查的吗?

【问题讨论】:

    标签: ios push-notification apple-push-notifications apigee


    【解决方案1】:

    您是正确的,如果通知显示没有错误并且已创建收据,则消息已正确传递到 APNS。

    除了 APNS 本身的任何变幻莫测会影响您的交付之外,我唯一能想到的就是如果您在通知中设置了“过期”属性。你有没有试过看看这对你的结果有什么影响?

    【讨论】:

    • 谢谢斯科特。我可能需要一段时间来验证这一点,因为我在一个限制性的环境中工作——我不希望你的回答不被承认。我在文档中错过了这个属性,我觉得这将解决这个问题。我会尽快更新。
    • 我确认设置 expire 属性可以解决问题。如果 Apigee 记录了未设置它的行为,那就太棒了 - 假设 Apigee 和 APNS 边界之间存在灰色区域。我们目前正在使用 Apigee 的管理门户发送通知,并且不支持过期标志(但这是我们的问题)。再次感谢斯科特。
    • 感谢 Davey 的分析和反馈!
    猜你喜欢
    • 1970-01-01
    • 2011-04-25
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多