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:

Portal

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:

Existing notification hub registrations

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:

Visual Studio Notification Hubs test send

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:

Connection String

Die folgenden Aufgaben sind beim Debuggen einer Lösung sinnvoll, die Benachrichtigungshubs verwendet:

  1. 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:

    Service Bus Explorer

  2. 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).

    Service Bus Explorer Eine Beschreibung der Ergebnisse pro Plattform finden Sie im Thema "Metriken ".

  3. 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 Ihrer AppDelegate-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.