2016-11-21 1 views
0

Wir richten Push-Benachrichtigungen für unsere App ein. Wir erstellen jetzt eine Konsolenanwendung, die bestimmt, an welche Benutzer gesendet werden soll, und sendet sie dann an diese Benutzer. Was ist für uns an diesem Punkt nicht offensichtlich, woher wissen wir, wann jeder von ihnen fertig war? Oder nicht abgeschlossen? Es gibt nicht viel Dokumentation von Microsoft (große Überraschung dort) und die Dokumentation, die es gibt, erklärt nicht wirklich, wie man die Antworten liest. Zum Beispiel ist hier ein Beispielausschnitt, von dem wir meinen, dass wir ihn implementieren müssen, da Tausende von Personen gleichzeitig eine Benachrichtigung erhalten könnten. Wir möchten, dass sie parallel laufen und die Benutzeroberfläche nicht blockieren.Azure Notification Hub Senden von Tausenden von Benachrichtigungen und Erhalten von Ergebnissen von jedem

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); 

}

Das macht uns Sinn, verwenden wir die WhenAll Methode, um alle Aufgaben auf parralel Threads auszuführen. Aber gibt es eine Möglichkeit zu wissen, was mit JEDER Aufgabe passiert, die ausgeführt wird? Zum Beispiel scheint die ContinueWith Methode zu tun, was wir wollen, außer wir denken, dass dies nur ausgeführt wird, nachdem alle Aufgaben abgeschlossen sind, und nicht nach jedem (bitte korrigieren Sie mich, wenn ich falsch liege).

Also, gibt es eine Möglichkeit, jede Antwort eines WhenAll Aufrufs zu lesen? Wenn nein, gibt es einen besseren Weg zu tun, was wir zu tun versuchen? Ich werde alle anderen benötigten Informationen liefern, bitte einfach fragen.

Antwort

0

Sie können die Telemetrie-Funktion pro Nachricht verwenden, um das Ergebnis jeder gesendeten Benachrichtigung zu erhalten. Sie müssen jedoch auf Standard Tier aktualisieren, um dies zu tun. Siehe Link Per Message Telemetry Per Message Telemetry Blog

Auf einer Seite beachten Sie NotificationOutcome.Result Eigenschaft mithilfe der EnableTestSend Eigenschaft verwenden können, wie in dem Link EnableTestSend property gezeigt (Suche nach Debug-Benachrichtigungen fehlgeschlagen). Dadurch wird die Benachrichtigung nur an 10 Geräte gesendet, die Ihrer Bedingung entsprechen. Dies wird hauptsächlich für Debugzwecke verwendet

Verwandte Themen