2017-04-09 1 views
0

Ich habe eine App mit einer einfachen Messenger-Komponente dazu. Wenn Benutzer1 eine Nachricht an Benutzer2 sendet, verwende ich Azure Notification Hubs, um eine Push-Benachrichtigung an Benutzer2 zu senden. Da ich Benachrichtigung Hub bin mit den Benutzergeräten für Push-Benachrichtigungen zu registrieren, weiß ich nicht, welches Telefon OS sie sich registriert haben, so Warteschlange nur eine Benachrichtigung für jeden Typen unterstützen I:Wie kann ich feststellen, ob eine Push-Benachrichtigung in Azure Notification Hubs erfolgreich zugestellt wurde?

NotificationOutcome outcome1 = await hub.SendAppleNativeNotificationAsync(jsoniOSPayload, tags); 
NotificationOutcome outcome2 = await hub.SendGcmNativeNotificationAsync(jsonAndroidPayload, tags); 
...(etc.) 

Allerdings müssen wir um den Fall zu behandeln, in dem eine App gelöscht wurde. In diesem Fall müssen wir dem Benutzer eine E-Mail senden, wenn keine Push-Benachrichtigung an eines seiner Geräte gesendet werden konnte.

Meine Frage ist: Wie kann ich feststellen, ob mindestens eine Benachrichtigung erfolgreich an ein Benutzergerät übermittelt wurde? Ich kenne die NotificationHubClient.EnableTestSend-Eigenschaft, die bewirkt, dass das NotificationOutcome-Objekt eine Erfolgszahl hat. Dies würde perfekt funktionieren, aber die documentation zeigt dies in der Produktion nicht optimal wäre:

„Wenn Test send aktiviert ist, geschieht folgendes: Alle Mitteilungen nur für die jeweils zu 10 Geräte erreichen bis senden Anrufs.Verfahren senden * Methoden eine Liste der Ergebnisse für alle diese Benachrichtigungen Lieferungen zurückgeben .. Die möglichen Ergebnisse sind die gleichen wie in Telemetrie angezeigt.Ergebnisse enthält Dinge wie Authentifizierungsfehler, Drosselungsfehler, erfolgreiche Lieferungen, und so weiter.Dieser Modus ist für nur zu Testzwecken, nicht für die Produktion und ist gedrosselt. "

Irgendwelche Vorschläge würden geschätzt!

Antwort

1

Wie kann ich feststellen, ob mindestens eine Benachrichtigung erfolgreich an ein Benutzergerät übermittelt wurde?

Wie Sie erwähnt haben, wird NotificationHubClient.EnableTestSend zum Debuggen verwendet und auf 10 Geräte beschränkt. Wenn wir die Anzahl der erfolgreich gelieferten erhalten möchten, können wir die Funktion NotificationHubClient.GetNotificationOutcomeDetailsAsync(string notificationId) verwenden, weitere Details finden Sie unter document.

Demo-Code:

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; 

enter image description here

Hinweis: Es ist nur für Standard-Preisstufe.

+0

Ich denke, nicht mit der Standard-Preis-Träne war mein Problem. Ich habe versucht, eine Benachrichtigungs-ID irgendwo zu finden, aber mit den niedrigeren Stufen scheint es, dass der Wert gerade nicht in der Antwort ist. Danke für deine Antwort! – lehn0058

Verwandte Themen