2016-11-21 62 views
0

我們正在爲我們的應用程序設置推送通知。我們正在創建一個控制檯應用程序,該應用程序現在將確定要發送給哪些用戶,然後將其發送給所述用戶。在這一點上我們不明顯的是,我們怎麼知道每一個什麼時候完成的?還是沒有完成?微軟沒有提供很多文檔(那裏有很大的驚喜),而且任何文檔都沒有真正解釋如何閱讀響應。Azure通知中心發送數千個通知並獲取每個通知的結果

例如,下面是我們認爲需要實現的示例片段,因爲我們可能有數千人同時收到通知,我們希望它們能夠並行運行而不會阻止用戶界面。

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方法似乎做我們想要的,除了我們認爲,這將只在所有任務完成後運行,而不是在每個任務完成後運行(請糾正我,如果我錯了)。

那麼,有沒有辦法讀取WhenAll調用的每個響應?如果不是,是否有更好的方法來做我們正在嘗試做的事情?我會提供任何其他所需的信息,請問。

回答

0

您可以使用每條消息遙測功能來獲取每個發送通知的結果。不過,您需要升級到Standard Tier來執行此操作。見鏈接 Per Message Telemetry Per Message Telemetry Blog

在一個側面說明,你可以通過使用EnableTestSend屬性如圖所示鏈接EnableTestSend property(搜索調試失敗通知)NotificationOutcome.Result屬性中使用。這隻會將通知發送到符合您的條件的10個設備。這主要用於調試目的