【问题标题】:Intermittent NotificationHub delivery failures with a NotificationSystemError: "InvalidToken"带有 NotificationSystemError 的间歇性 NotificationHub 传递失败:“InvalidToken”
【发布时间】:2017-12-16 05:52:42
【问题描述】:

我遇到了 NotificationHubs 的问题,通知有时会静默地无法传送到 iOS 客户端。

我的通知中心设置为使用带有 APNS 的令牌身份验证(与旧证书身份验证相反)。

我将通知中心定价层更新为标准,以便获得更多相关信息。大多数情况下(超过 95%)通知都会正确通过。我添加了日志记录以跟踪与通知中心排队的每个推送通知的 NotificationId。然后,当我收到失败警报时,我通过以下方法查找了该特定通知的详细信息:

var details = await notificationHub.GetNotificationOutcomeDetailsAsync("<notification id>");

检查详细信息时,我注意到当状态为“已完成”(意味着 NotificationHubs 已接收并处理该操作)时,PnsErrorDetailsUri 有一个非空值,表明传递通知存在问题:

在浏览器中导航到 PnsErrorDetailsUri 的值会导致下载以下文件:

在这里,我注意到 NotificationSystemError 说有一个“InvalidToken”。这个令牌似乎应该与 Azure 和 APNS 之间的一些“幕后”通信有关。 这绝对不是因为在 NotificationHubs 中注册的设备令牌无效。 我验证了registrationId 仍然在通知中心,并且它指向了正确的设备。另外,从details中获取原始NotificationBody,重新提交相同的tag,新的通知就可以成功下发了。

有谁知道 InvalidToken 可能指的是什么,或者这些间歇性 NotificationHub 传递失败的原因是什么?

更新:

我发现提到了不同的 NotificationSystemErrors here,其中之一是我的 InvalidToken 错误。但是,我找不到这些错误的实际原因的描述。

【问题讨论】:

  • 您的服务是否启用了身份验证?如果是,您将需要在包含有效访问令牌的请求中提供 X-ZUMO-AUTH 标头。否则会导致无效令牌错误。
  • 我正在使用 C# NotificationHubs nuget 包,它应该为我管理所有标头。此外,我的通知正在从由 Azure 服务总线队列触发的 azure 函数排队 - 未启用任何身份验证功能。
  • 您还在遇到这个问题吗?您能否与我们分享命名空间和集线器的详细信息,以及发送至 nhsloop@microsoft.com 的时间表,以便进一步调查?
  • 是的,我们仍然遇到这个问题。我有向您发送请求的信息,但不幸的是,nhsloop@microsoft.com 退回了我的电子邮件,并显示错误:“nhsloop 组仅接受来自其组织或其允许发件人列表中的人员的邮件”
  • 您能否尝试将详细信息发送至 nhubsupport@microsoft.com。

标签: azure-notificationhub


【解决方案1】:

我从来没有真正得到确切的答案,为什么会发生错误,但我似乎已经能够解决我的问题。

我们有 2 个独立的通知命名空间/集线器,一个用于苹果生产通知,一个用于苹果沙盒通知。我们有一个开关,以便设备注册到正确的集线器。我调查了我们所有的注册,它们看起来都在正确的位置。

但是,在这次检查中,我注意到许多设备都有大量注册。这些注册中的每一个都具有相同的苹果 PNS 标识符(这是一个有效的令牌),但我觉得奇怪的是注册了几十个(在一种情况下是数百个)相同的 PNS 令牌。每个RegistrationID是相同的,除了它具有后(例如,1231231231235396312-6910179870480973035-1,1231231231235396312-6910179870480973035-2,1231231231235396312-6910179870480973035-3等)连字符的递增数。看起来每次我调用 NotificationHubClient.CreateAppleNativeRegistrationAsync 时,它都会添加一个新条目而不进行重复数据删除。清除这些重复项似乎解决了我遇到的问题。似乎 NotificationHubs 有时会因为与设备关联的注册过多而感到困惑。

我最终添加了一些代码来尝试暂时过滤掉重复项。但是,我希望 NotificationHubs 应该为我处理这个......

【讨论】:

    猜你喜欢
    • 2019-04-18
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2017-04-19
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多