Debuggen von Benachrichtigungshubs
In diesem Abschnitt werden einige Tipps zum Debuggen einer Lösung beschrieben, die Azure Notification Hubs verwendet.
Das Debuggen von Pushbenachrichtigungen kann eine Herausforderung sein, da so viele Systeme beteiligt sind: Ihre Geräte-App, Ihr Back-End, das Plattformbenachrichtigungssystem und wahrscheinlich ein Pushbenachrichtigungsdienst wie Azure Notification Hubs. In einem typischen Szenario ist es etwas aufwendiger, Ihren Benachrichtigungshub mit den richtigen Pushanmeldeinformationen einzurichten, Ihre Geräte-App beim Plattformbenachrichtigungssystem sowie beim Hub zu registrieren und schließlich Ihr Back-End zu aktualisieren, damit es Benachrichtigungen sendet. Da eine solche Architektur komplex ist, besteht das Risiko, dass an einer beliebigen Stelle ein Fehler auftritt, der dazu führt, dass Benachrichtigungen das Gerät nicht erreichen. Praktischerweise stehen mehrere Tools zur Verfügung, die Sie beim Debuggen Ihrer Pushbenachrichtigungskonfiguration unterstützen.
Azure-Verwaltungsportal
Server-Explorer von Visual Studio
Service Bus-Explorer
Azure-Verwaltungsportal
Über das Azure-Verwaltungsportal können Sie den Status von Benachrichtigungen und Registrierungen überwachen und Testbenachrichtigungen senden. Sie können auf diese Funktion auf der Registerkarte Debuggen Ihres Benachrichtigungshubs zugreifen, wie im Folgenden gezeigt:
Sie können angeben, welche Pushbenachrichtigungsdienst Sie beim Senden der Testbenachrichtigung verwenden möchten: Windows Phone, Windows, Windows, iOS, Android oder benutzerdefinierte (mit einer Vorlage). Sie können eine zufällige Testbenachrichtigung senden, oder Sie können Testbenachrichtigungen an eine bestimmte Sammlung von Registrierungen senden. Um eine Test-Pushbenachrichtigung zu senden, legen Sie die erforderlichen Parameter auf der Registerkarte Debuggen fest und klicken am unteren Bildschirmrand auf Senden.
Server-Explorer von Visual Studio
Der Server-Explorer in Visual Studio stellt eine Verbindung mit Ihrem Microsoft Azure-Abonnement her, damit Sie direkt in der Visual Studio-IDE mit Ihren Azure-Diensten arbeiten können. Sobald eine Verbindung besteht, können Sie Ihre Benachrichtigungshubs in einem begrenzten Umfang testen und debuggen. Das Debuggen in Visual Studio bietet sich insbesondere an, wenn Sie Ihre App in Visual Studio testen. In Visual Studio können Sie vorhandene Pushbenachrichtigungsregistrierungen für einen bestimmten Benachrichtigungshub überprüfen. Sie können auch die Konfiguration Ihrer Benachrichtigungshubs testen, indem Sie Testnachrichten an registrierte Geräte senden.
Um für einen Benachrichtigungshub in Visual Studio eine Diagnose zu erstellen, erweitern Sie den Knoten Notification Hubs im Server-Explorer unter Azure, klicken mit der rechten Maustaste auf den Hubnamen und klicken auf Diagnose.
Tipp
Um von Visual Studio aus direkt zum Azure-Verwaltungsportal zu navigieren, klicken Sie im Server-Explorer mit der rechten Maustaste auf den Hubnamen und klicken anschließend auf Im Verwaltungsportal öffnen.
Im Folgenden sehen Sie die Diagnoseregisterkarte Geräteregistrierungen, auf der vorhandene Registrierungen angezeigt werden:
Wenn Sie über eine große Anzahl von Registrierungen verfügen, können Sie die Liste anhand von Tags filtern und nach Spalten sortieren. Sie können die Tags einer vorhandenen Registrierung auch bearbeiten, indem Sie eine vorhandene Registrierung auswählen und dann auf das Symbol "Tag bearbeiten" klicken.
Im Folgenden sehen Sie die Diagnoseregisterkarte zum Sendenvon Testnachrichten, auf der Sie eine Testnachricht an eine vorhandene Registrierung senden können:
Sie können entweder eine Benachrichtigung an zufällig ausgewählte Clientregistrierungen senden (Broadcast) oder nur an Registrierungen mit einem bestimmten Tag. Bei Verwendung dieser Testfunktion gewährleistet Visual Studio, dass maximal 10 Clients Testbenachrichtigungen empfangen. Die Testergebnisse werden in der Tabelle mit den Nachrichtenergebnissen angezeigt. Dies ist das gleiche Verhalten wie das Festlegen der EnableTestSend auf true auf der NotificationHubClient-API .
Wenn Sie einen Nachrichtentyp auswählen, wird eine Testnachricht mit dem richtigen Format für die ausgewählte Plattform und den Pushbenachrichtigungstyp generiert.
Im Eigenschaftenfenster werden zusätzliche Informationen zum Benachrichtigungshub angezeigt, einschließlich Konfigurationsstatus, Informationen zu Verbindungszeichenfolgen und Gültigkeitsdauer von Registrierungen (TTL). Die TTL wird im serialisierten Tages- und Stundenformat von PxxDTyyH angezeigt, wobei xx Tage und yy ist, wobei die Standardregistrierung 90-Tage-Registrierung P90D ist.
Service Bus-Explorer
Sie können auch das Tool Service Bus-Explorer verwenden, um Ihren Debugvorgang zu unterstützen. Sie können Service Bus Explorer hier herunterladen. Dieses Tool ermöglicht das Durchsuchen der Geräte, die zurzeit bei Ihrem Benachrichtigungshub registriert sind. Sie können Service Bus-Explorer auch zum Senden von Testbenachrichtigungen verwenden. Alle diese Aufgaben können mit dem Azure SDK und der .NET-Clientbibliothek oder über REST ausgeführt werden. Dieses Tool vereinfacht den Debugvorgang jedoch erheblich. Eine kurze Einführung in Service Bus Explorer finden Sie in diesem Video.
Wenn Sie Service Bus-Explorer starten, verbinden Sie das Tool mithilfe Ihrer ACS-Verbindungszeichenfolge (nicht Ihrer Hubverbindungszeichenfolge, die in Ihrer App und im Back-End verwendet wird) mit Ihrem Namespace. Beispiel:
Die folgenden Aufgaben sind beim Debuggen einer Lösung sinnvoll, die Benachrichtigungshubs verwendet:
Stellen Sie sicher, dass das Gerät ordnungsgemäß beim Hub registriert wurde. Zu diesem Zweck können Sie alle Registrierungen in Ihrem Hub abrufen und dann sicherstellen, dass eine Registrierung mit dem richtigen PNSHandle (z. B. ChannelURI, Gerätetoken oder registrationId) und die richtige Tagsammlung vorhanden sind. Wählen Sie in Service Bus-Explorer Ihren Benachrichtigungshub auf der linken Seite aus, und fragen Sie die Registrierungen dann mithilfe der Schaltfläche Registrierungen im unteren Bereich ab. Ihr Code in der Client-App sollte die Registrierungen bereitstellen. Beispiel:
Wenn Sie über die Registrierung verfügen, stellen Sie sicher, dass beim Senden einer Nachricht ein Ergebnis vom Typ "Erfolg" empfangen wird (dies wird in Service Bus-Explorer sofort angezeigt, ohne dass Sie auf die Aktualisierung des Portaldashboards warten müssen). Wenn Sie ein anderes Ergebnis erhalten, lesen Sie dieses MSDN-Thema , um zu verstehen, was passiert ist (die meisten Probleme finden Sie hier im Zusammenhang mit der Anmeldeinformationenkonfiguration im Hub und/oder in der Client-App).
Eine Beschreibung der Ergebnisse pro Plattform finden Sie im Thema "Metriken ".
Wenn der Plattformbenachrichtigungsdienst "Erfolg" zurückgibt, bedeutet dies, dass Ihr Benachrichtigungshub Ihre Benachrichtigung erfolgreich an das Plattformbenachrichtigungssystem übermittelt hat. Wenn sie noch immer nicht angezeigt wird, liegt dies normalerweise an plattformspezifischen Eigenheiten. Beispiel:
In iOS wird Ihre Benachrichtigung abgefangen, wenn Ihre App ausgeführt wird (auch im Hintergrund). Damit die Benachrichtigung angezeigt wird, müssen Sie die
application:didReceivePushNotification:
-Methode in IhrerAppDelegate
-Klasse implementieren. Auch wenn Ihre JSON-Nutzlast falsch ist, nimmt das APNS die Benachrichtigung an, das Gerät zeigt jedoch nichts an.In Windows Phone werden keine Popups angezeigt, wenn Ihre App im Vordergrund ausgeführt wird.
Stellen Sie in Android sicher, dass Ihr Broadcastlistener ordnungsgemäß konfiguriert ist und die Berechtigungen im Manifest für die entsprechenden Pakete festgelegt sind.
Überprüfen Sie schließlich noch, ob Sie die Registrierung für die gleichen Benachrichtigungstypen ausführen, die Sie an Ihren Benachrichtigungshub senden. Beim Registrieren einer Vorlage müssen Sie eine Vorlagenbenachrichtigung senden. Wenn Sie sich für systemeigene Benachrichtigungen registrieren, müssen Sie eine systemeigene Benachrichtigung für die richtige Plattform senden.
Ergebniscodes
Wenn Sie eine Testbenachrichtigung über das Portal oder den Service Bus-Explorer senden, wird das Ergebnis als Erfolg oder Fehler zurückgegeben. In der folgenden Tabelle werden die möglichen Ergebnisse und ihre Bedeutung aufgeführt:
Ergebnisklasse | Beschreibung |
---|---|
Erfolg |
Die Benachrichtigung wurde erfolgreich an das PNS übermittelt. |
Gedrosselt |
Das PNS hat die Benachrichtigung nicht akzeptiert, weil die zugehörigen Anmeldeinformationen gedrosselt sind. |
ChannelThrottled |
Das PNS hat die Benachrichtigung nicht akzeptiert, weil der Zielkanal (ChannelUri, Gerätetoken usw.) gedrosselt ist. |
ChannelDisconnected |
Das PNS hat die Benachrichtigung nicht akzeptiert, weil der Kanal zurzeit getrennt ist. |
Dropped |
Das PNS hat die Benachrichtigung nicht akzeptiert, weil die Kanalwarteschlange voll ist. |
PNS-Probleme |
|
PnsUnreachable |
Eine Verbindung mit dem PNS kann nicht hergestellt werden. |
PnsInterfaceError |
Fehler in Service Bus Schnittstelle mit dem PNS. |
PnsServerError |
Das PNS hat einen internen Fehler gemeldet. |
PnsUnavailable |
Das PNS hat gemeldet, dass der Dienst nicht verfügbar ist. |
PNS-Authentifizierungsprobleme |
|
TokenProviderUnreachable |
Wenn ein Autorisierungstoken vor der Kontaktaufnahme mit dem PNS abgerufen werden muss (z. B. WNS), tritt dieser Fehler auf, wenn es nicht möglich ist, den Dienst zu erreichen, um dieses Token abzurufen. Hinweis: Dies ist nicht das Ergebnis, wenn die Anmeldeinformationen falsch sind. |
TokenProviderInterfaceError |
Fehler in der Service Bus Schnittstelle mit dem Tokenanbieterdienst. |
InvalidCredentials |
Die in der Registrierung angegebenen Anmeldeinformationen sind nicht vorhanden, sie sind blockiert oder Service Bus konnten sie nicht erfolgreich verwenden (z. B. die PNS verweigerte sie oder der Dienst, der das Autorisierungstoken verweigert hat). |
InvalidToken |
Wenn ein Autorisierungstoken vor der Kontaktaufnahme mit dem PNS abgerufen werden muss (z. B. WNS), tritt dieser Fehler auf, wenn das PNS das Token zurückweist. |
WrongToken |
Das für das PNS bereitgestellte Token ist gültig, erteilt jedoch keine Rechte für das angegebene PNShandle-Objekt. |
PNSHandle-Probleme |
|
BadChannel |
Das PNS hat das bereitgestellte PNSHandle-Objekt nicht als gültiges PNShandle erkannt. |
ExpiredChannel |
Das PNS hat das PNSHandle-Objekt erkannt, das PNSHandle ist jedoch nicht mehr gültig. |
WrongChannel |
Das Handle wird vom PNS erkannt, ist für die aktuelle Benachrichtigung jedoch nicht gültig. |
Anforderungsprobleme |
|
InvalidNotificationFormat |
PNS-Fehler bezüglich des Formats der Benachrichtigung. Hinweis: Dies kann geschehen, wenn entweder die bereitgestellte Vorlage falsch formatiert ist oder das Ergebnis der Anwendung der Vorlage auf die eingehende Nachricht zu einer falsch formatierten Benachrichtigung führt. |
InvalidNotificationSize |
PNS-Fehler bezüglich der Größe der Benachrichtigung. Hinweis: wie oben. |