我们正在为我们的应用设置推送通知。我们现在正在创建一个控制台应用程序,用于确定要发送给哪些用户,然后将其发送给所述用户。在这一点上我们不明白的是我们如何知道他们每个人何时完成?还是没有完成?微软提供的文档并不多(这里有很大的惊喜),而且没有任何文档也没有真正解释如何阅读回复。
例如,这里是我们认为需要实现的示例片段,因为我们可能有数千人同时收到通知,我们希望它们并行运行而不是阻止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
方法来执行parralel线程上的所有任务。但是有没有办法知道运行的每个任务会发生什么?例如,ContinueWith
方法似乎做了我们想要的,除了我们认为这只会在所有任务完成后运行,而不是在每个任务完成后(如果我和#39;我错了。)
那么,有没有办法阅读WhenAll
来电的每个回复?如果不是,有没有更好的方法来做我们想做的事情?我将提供所需的任何其他信息,请问。
答案 0 :(得分:0)
您可以使用每条消息遥测功能获取发送的每条通知的结果。但是,您需要升级到标准层才能执行此操作。见链接 Per Message Telemetry Per Message Telemetry Blog
在旁注中,您可以使用EnableTestSend属性来使用NotificationOutcome.Result属性,如链接EnableTestSend property(搜索调试失败通知)中所示。这只会将通知发送到符合您条件的10台设备。这主要用于调试目的