Azure 通知中心发送数千条通知并从每个通知中取回结果
Azure Notification Hub Sending thousands of notifications and getting back results from each
我们正在为我们的应用设置推送通知。我们现在正在创建一个控制台应用程序,它将确定要发送给哪些用户,然后将它们发送给所述用户。在这一点上对我们来说不明显的是,我们如何知道它们中的每一个何时完成?还是没有完成? Microsoft 提供的文档不多(令人大吃一惊),而且无论有什么文档都没有真正解释如何阅读回复。
例如,这是我们认为需要实施的示例片段,因为我们可以同时让数千人收到通知,我们希望他们运行 并行而不是阻止UI。
public async Task GenerateNotifications()
{
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(AppHelper.AzureNotificationHubConnectionString, "myhub");
List<Task<NotificationOutcome>> notificaitonTasks = new List<Task<NotificationOutcome>>();
for (int i = 0; i < 10; i++)
{
var notification = new
{
aps = new
{
alert = string.Format("Awesome Notification {0}", i),
sound = "default"
}
};
string notificationJSON = JsonConvert.SerializeObject(notification);
notificaitonTasks.Add(hub.SendAppleNativeNotificationAsync(notificationJSON, "mytag"));
}
await Task.WhenAll(notificaitonTasks);
}
这对我们来说很有意义,我们使用 WhenAll
方法在并行线程上执行所有任务。但是有没有办法知道每个获得 运行 的任务会发生什么?例如,ContinueWith
方法似乎可以满足我们的要求,除了我们 认为 这只会 运行 在所有任务完成之后,而不是在每个任务完成之后一个(如有错误请指正)
那么,有没有办法读取 WhenAll
调用的每个响应?如果不是,是否有更好的方法来做我们正在尝试做的事情?我会提供任何其他需要的信息,请问。
您可以使用每条消息遥测功能来获取发送的每条通知的结果。但是,您需要升级到标准层级才能做到这一点。参见 link
Per Message Telemetry
Per Message Telemetry Blog
附带说明,您可以通过使用 EnableTestSend 属性 来使用 NotificationOutcome.Result 属性,如 link EnableTestSend property(搜索调试失败通知)。这只会将通知发送到符合您条件的 10 台设备。这主要用于调试目的
我们正在为我们的应用设置推送通知。我们现在正在创建一个控制台应用程序,它将确定要发送给哪些用户,然后将它们发送给所述用户。在这一点上对我们来说不明显的是,我们如何知道它们中的每一个何时完成?还是没有完成? Microsoft 提供的文档不多(令人大吃一惊),而且无论有什么文档都没有真正解释如何阅读回复。
例如,这是我们认为需要实施的示例片段,因为我们可以同时让数千人收到通知,我们希望他们运行 并行而不是阻止UI。
public async Task GenerateNotifications()
{
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(AppHelper.AzureNotificationHubConnectionString, "myhub");
List<Task<NotificationOutcome>> notificaitonTasks = new List<Task<NotificationOutcome>>();
for (int i = 0; i < 10; i++)
{
var notification = new
{
aps = new
{
alert = string.Format("Awesome Notification {0}", i),
sound = "default"
}
};
string notificationJSON = JsonConvert.SerializeObject(notification);
notificaitonTasks.Add(hub.SendAppleNativeNotificationAsync(notificationJSON, "mytag"));
}
await Task.WhenAll(notificaitonTasks);
}
这对我们来说很有意义,我们使用 WhenAll
方法在并行线程上执行所有任务。但是有没有办法知道每个获得 运行 的任务会发生什么?例如,ContinueWith
方法似乎可以满足我们的要求,除了我们 认为 这只会 运行 在所有任务完成之后,而不是在每个任务完成之后一个(如有错误请指正)
那么,有没有办法读取 WhenAll
调用的每个响应?如果不是,是否有更好的方法来做我们正在尝试做的事情?我会提供任何其他需要的信息,请问。
您可以使用每条消息遥测功能来获取发送的每条通知的结果。但是,您需要升级到标准层级才能做到这一点。参见 link Per Message Telemetry Per Message Telemetry Blog
附带说明,您可以通过使用 EnableTestSend 属性 来使用 NotificationOutcome.Result 属性,如 link EnableTestSend property(搜索调试失败通知)。这只会将通知发送到符合您条件的 10 台设备。这主要用于调试目的