我有一个带有简单信使组件的应用程序。当user1向user2发送消息时,我使用Azure通知中心向user2发送推送通知。由于我使用通知中心注册用户的推送通知设备,我不知道他们注册了哪些手机操作系统,因此只需为我支持的每种类型排队通知:< / p>
NotificationOutcome outcome1 = await hub.SendAppleNativeNotificationAsync(jsoniOSPayload, tags);
NotificationOutcome outcome2 = await hub.SendGcmNativeNotificationAsync(jsonAndroidPayload, tags);
...(etc.)
但是,我们需要处理已删除应用的情况。发生这种情况时,如果无法将推送通知发送到任何设备,我们需要向用户发送电子邮件。
我的问题是:如何将至少一个通知成功传送到用户设备?我知道NotificationHubClient.EnableTestSend属性,它确实导致NotificationOutcome对象具有成功计数。这将完美地工作,但documentation表明这在生产中不是最佳的:
&#34;启用测试发送时,会发生以下情况:所有通知 每次发送呼叫最多只能达到10个设备。发送*方法 返回所有这些通知交付的结果列表。 可能的结果与遥测中显示的结果相同。成果 包括身份验证错误,限制错误, 成功交付,等等。此模式仅用于测试目的, 不是用于生产,而是受到限制。&#34;
任何建议都将不胜感激!
答案 0 :(得分:3)
如何判断至少有一个通知是否已成功传递给用户设备?
正如您所提到的,NotificationHubClient.EnableTestSend
用于调试,仅限于10台设备。
如果我们想要获得成功交付的数量,我们可以使用函数NotificationHubClient.GetNotificationOutcomeDetailsAsync(string notificationId)
,更多详情请参阅document。
演示代码:
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("Endpoint=sb://notificationnamespace.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=xxxxxxx", "NotificationHub Name");
string message = "{\"title\":\"((Notification title))\",\"description\":\"Hello from Azure\"}";
var result = await hub.SendGcmNativeNotificationAsync(message); //GCM for example.
var notificationDetails = await hub.GetNotificationOutcomeDetailsAsync(result.NotificationId);
return notificationDetails;
注意:它仅适用于标准定价等级。