gpt4 book ai didi

ios - 诊断从 Azure 通知中心到 APNS 的丢弃通知

转载 作者:可可西里 更新时间:2023-11-01 03:54:08 28 4
gpt4 key购买 nike

我们(大部分)成功地通过 Azure 通知中心向 iOS 和 Android 设备实现了推送通知。

问题在于,某些 iOS 设备显然从未收到 Azure 通知中心发送的通知。

我们使用模板和标签将消息定向到适当的设备。这些标签是兴趣主题,而不是特定于用户的,因此我们希望将一个标签通知推送到订阅该标签的所有设备。

Android 设备似乎可以完美地接收通知,但 iOS 设备则不一致。他们中的大多数人都工作。有几个则不然。

我们很清楚,推送通知是尽最大努力传递的,并且无法保证可靠性,但我们有限的测试发现,持续无法接收推送通知的设备数量比看起来不合理的多(大约十几个设备中出现两次以上故障) )。

设置如下:

我们在后端有一个简单的 C# 例程,它连接到 Azure 通知中心并向 Azure 发送通知:

var outcome = await hub.SendTemplateNotificationAsync(properties, tag);

我们使用了 GetAllRegistrationsAsync 方法来确保我们正在检查的每个设备都已成功注册并使用正确的模板。每个设备均已注册,所有模板均正确。

我们不处于“测试模式”; NotificationHubClient.CreateClientFromConnectionStringenableTestSend 参数设置为 False。

疑难解答:

当我们发送通知时,大多数设备都会收到通知,并且在我们测试的特定情况下,会使用正确的数字更新角标(Badge)计数器。

但是,一些设备似乎没有收到通知。我们重新启动设备后,其中一台设备确实收到了通知,但之后就停止了。

使用上述 GetAllRegistrationsAsync 方法,我们已验证问题设备是否已在 Azure 上正确注册并具有正确的标签和模板。

我们能够从 Azure 注册中确定问题设备的设备 token 。我们使用 PHP 脚本直接与 APNS 通信,使用设备 token 向问题设备发送通知。每次,设备都会收到此直接发送的通知。只有来自 Azure 的通知不可靠。

当我们检查 Azure 通知中心监视器页面时,我们会看到过去 24 小时的以下指标:

  • 967 APNS 成功通知
  • 3 个 APNS 不良 channel 错误
  • 2 个 APNS channel 过期错误
  • 4 个 APNS 错误

...并且一般情况下没有报告 APNS 或 Azure 的其他错误。我们看到的故障率应该导致错误计数超过 20。

我们无法确定哪些设备 token 导致了错误;有没有办法从 Azure 获取此信息?

我们无法解释为什么我们可以通过 APNS 本身而不是通过 Azure 直接向这些设备发送通知,以及为什么 Azure 报告的错误不多。

有什么建议或见解吗?

最佳答案

您的数据库中很可能有一些沙箱设备 token (我不确定这些设备 token 是否存储在您的服务器中或 Azure 通知中心中)。当尝试将带有沙箱设备 token 的通知发送到生产推送环境时,Apple 返回 InvalidToken 错误,并且连接被关闭。

很多时候,当向 Apple 的 APN 服务器发送推送通知的服务器收到错误响应时,它已经发送了更多通知(可能带有有效 token ),并且所有这些通知都被 Apple 丢弃。此时,只有在与 APNS 建立新连接后,Apple 才会接受新通知,因此需要重新发送在无效 token 后发送到旧连接的消息。 Azure 可能无法正确处理此重新发送。

正如您所说,Azure 通知中心监视器页面显示一些错误。我怀疑 3 APNS Bad Channel Errors 意味着设备 token 无效。我不知道数据库中实际有多少个无效设备 token ,但即使是一个也可能导致许多带有有效 token 的通知不被 Apple 接受。

最好的解决方案是测试数据库中的所有设备 token ,找出无效的设备 token 并将其删除。

关于ios - 诊断从 Azure 通知中心到 APNS 的丢弃通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24543173/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com