Azure NotificationHub - 检测失败的通知

Azure NotificationHub - Detect failed notifications

我正在尝试将失败的通知存储在 db 中,例如客户端无法访问互联网。这将使我能够从 backgroundService 检查是否缺少通知,然后从 backgroundService.

创建它

因此,我的 Azure App Service Mobile 上有以下内容:

var notStat = await hub.SendWindowsNativeNotificationAsync(wnsToast, tag);
telemetry.TrackTrace("failure : " + notStat.Failure + " | Results : " + notStat.Results + " | State : " + notStat.State + " | Success : " + notStat.Success + " | trackingID : " + notStat.TrackingId + ");

代码片段是为了测试来自客户端的影响,但无论我做什么,生成的日志都只是消息 enqueued

问题

那么如何检测失败的通知?

结论

总结对已接受答案的讨论:

发送通知后,NotificationId 和其他相关数据存储在单独的 Table。

客户端上的事件收到通知后,将向服务器发送一条消息,说明已收到通知。然后从 Table.

中删除该条目

客户端未收到的通知将通过 background task 找到。这将是每次 background task 触发时,例如每 6 小时,background task 将检索所有丢失的通知。这使 background task 能够创建相关通知,并且用户不会错过任何通知。

enqueued 的 return 是预期的 - 请参考 troubleshooting guidance。有关发生的事情的更多见解,请尝试设置 EnableTestSend -

"result.State will simply state Enqueued at the end of the execution without any insight into what happened to your push. Now you can use the EnableTestSend boolean" (c) documentation

但请注意,当启用 EnableTestSend 时,有一些限制(在同一页上有描述,因此不会复制粘贴到此处以避免将来出现信息过时的问题)。

您也可以使用每消息遥测功能或 REST API - Fiddler+some documentation

并且,作为后续问题,有一些关于 SO 的讨论,我看到您可能会觉得有帮助: and

最后,我强烈建议(如果您还没有)看一看 FAQ - 了解不同平台如何处理通知很重要,以避免出现这种情况当你尝试调试一些由 desing 完成的事情时(例如,也许,如果设备离线,并且有通知,只有最后一个会被传递,等等)。