【发布时间】: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。