Verwijderde meldingen diagnosticeren in Azure Notification Hubs

Een veelvoorkomende vraag over Azure Notification Hubs is het oplossen van problemen wanneer meldingen van een toepassing niet worden weergegeven op clientapparaten. Klanten willen weten waar en waarom meldingen zijn verwijderd en hoe ze het probleem kunnen oplossen. In dit artikel wordt aangegeven waarom meldingen mogelijk worden verwijderd of niet worden ontvangen door apparaten. Ook wordt uitgelegd hoe u de hoofdoorzaak kunt bepalen.

Het is essentieel om eerst te begrijpen hoe Notification Hubs meldingen naar een apparaat pusht.

Notification Hubs architecture

In een typische meldingsstroom voor verzenden wordt het bericht verzonden van de back-end van de toepassing naar Notification Hubs. Notification Hubs verwerkt alle registraties. Er wordt rekening gehouden met de geconfigureerde tags en tagexpressies om doelen te bepalen. Doelen zijn de registraties die de pushmelding moeten ontvangen. Deze registraties kunnen alle ondersteunde platforms omvatten: Android, Baidu (Android-apparaten in China), Fire OS (Amazon) iOS, Windows en Windows Telefoon.

Wanneer de doelen zijn vastgesteld, pusht Notification Hubs meldingen naar de pushmeldingsservice voor het apparaatplatform. Voorbeelden hiervan zijn de Apple Push Notification Service (APNs) voor iOS en macOS en Firebase Cloud Messaging (FCM) voor Android-apparaten. Notification Hubs pusht meldingen verdeeld over meerdere batches van registraties. Deze wordt geverifieerd met de respectieve pushmeldingsservice, op basis van de referenties die u hebt ingesteld in Azure Portal, onder Notification Hub configureren. De pushmeldingsservice stuurt de meldingen vervolgens door naar de respectieve clientapparaten.

Het laatste deel van de levering van meldingen is tussen de pushmeldingsservice van het platform en het apparaat. De bezorging van meldingen kan mislukken in een van de vier fasen in het pushmeldingsproces (client, back-end van toepassing, Notification Hubs en de pushmeldingsservice van het platform). Zie het overzicht van Notification Hubs voor meer informatie over de Notification Hubs-architectuur.

Er kan een fout optreden bij het leveren van meldingen tijdens de eerste test-/faseringsfase. Verwijderde meldingen in deze fase kunnen duiden op een configuratieprobleem. Als er tijdens de productie een fout optreedt bij het leveren van meldingen, kunnen sommige of alle meldingen worden verwijderd. In dit geval wordt een dieper probleem met het toepassings- of berichtpatroon aangegeven.

In de volgende sectie worden scenario's besproken waarin meldingen kunnen worden verwijderd, variërend van algemeen tot zeldzaam.

Onjuiste configuratie van Notification Hubs

Als u meldingen wilt verzenden naar de respectieve pushmeldingsservice, moeten Notification Hubs zichzelf verifiëren in de context van uw toepassing. U moet een ontwikkelaarsaccount maken met de meldingsservice van het doelplatform (Microsoft, Apple, Google, enzovoort). Vervolgens moet u uw toepassing registreren bij het besturingssysteem waar u een token of sleutel krijgt die u gebruikt om met de doel-PNS te werken.

U moet platformreferenties toevoegen aan Azure Portal. Als er geen meldingen het apparaat bereiken, is de eerste stap om ervoor te zorgen dat de juiste referenties zijn geconfigureerd in Notification Hubs. De referenties moeten overeenkomen met de toepassing die is gemaakt onder een platformspecifiek ontwikkelaarsaccount.

Zie Aan de slag met Azure Notification Hubs voor stapsgewijze instructies om dit proces te voltooien.

Hier volgen enkele veelvoorkomende onjuiste configuraties om te controleren op:

Naamlocatie van Notification Hub

Zorg ervoor dat de naam van de Notification Hub (zonder typefouten) op elk van deze locaties hetzelfde is:

  • Waar u zich registreert bij de client
  • Waar u meldingen verzendt vanaf de back-end
  • Waar u de referenties van de pushmeldingservice hebt geconfigureerd

Zorg ervoor dat u de juiste configuratiereeksen voor shared access Signature gebruikt op de client en de back-end van de toepassing. Over het algemeen moet u DefaultListenSharedAccessSignature gebruiken op de client en DefaultFullSharedAccessSignature op de back-end van de toepassing. Hiermee worden machtigingen verleend voor het verzenden van meldingen naar Notification Hubs.

APN-configuratie

U moet twee verschillende hubs onderhouden: één voor productie en een andere voor het testen. U moet het certificaat dat u in een sandbox-omgeving gebruikt, uploaden naar een afzonderlijke hub dan het certificaat/de hub die u in productie gaat gebruiken. Probeer niet verschillende typen certificaten te uploaden naar dezelfde hub. Dit veroorzaakt meldingsfouten.

Als u per ongeluk verschillende typen certificaten uploadt naar dezelfde hub, moet u de hub verwijderen en beginnen met een nieuwe hub. Als u om een of andere reden de hub niet kunt verwijderen, moet u ten minste alle bestaande registraties van de hub verwijderen.

FCM-configuratie

  1. Zorg ervoor dat de serversleutel die u hebt verkregen uit Firebase overeenkomt met de serversleutel die u hebt geregistreerd in Azure Portal.

    Firebase server key

  2. Zorg ervoor dat u de project-id op de client hebt geconfigureerd. U kunt de waarde voor Project-id verkrijgen via het Firebase-dashboard.

    Firebase Project ID

Toepassingsproblemen

Tags en tagexpressies

Als u tags of tagexpressies gebruikt om uw doelgroep te segmenteren, is het mogelijk dat wanneer u de melding verzendt, er geen doel wordt gevonden. Deze fout is gebaseerd op de opgegeven tags of tagexpressies in uw verzendgesprek.

Controleer uw registraties om ervoor te zorgen dat de tags overeenkomen wanneer u een melding verzendt. Controleer vervolgens de meldingsbevestiging van alleen de clients die deze registraties hebben.

Stel dat al uw registraties bij Notification Hubs de tag Politiek gebruiken. Als u vervolgens een melding met de tag Sport verzendt, wordt de melding niet naar een apparaat verzonden. Een complexe case kan betrekking hebben op tagexpressies waarbij u zich hebt geregistreerd met behulp van 'Tag A' of 'Tag B', maar u hebt 'Tag A && Tag B' gericht. De sectie tips voor zelfdiagnose verderop in het artikel laat zien hoe u uw registraties en hun tags kunt controleren.

Sjabloonproblemen

Als u sjablonen gebruikt, moet u ervoor zorgen dat u de richtlijnen volgt die worden beschreven in Sjablonen.

Ongeldige registraties

Als de Notification Hub correct is geconfigureerd en tags of tagexpressies correct zijn gebruikt, worden geldige doelen gevonden. Meldingen moeten naar deze doelen worden verzonden. Notification Hubs activeert vervolgens meerdere verwerkingsbatches parallel. Elke batch verzendt berichten naar een set registraties.

Notitie

Omdat Notification Hubs batches parallel verwerkt, wordt de volgorde waarin de meldingen worden bezorgd, niet gegarandeerd.

Notification Hubs is geoptimaliseerd voor een 'at-most-once'-berichtbezorgingsmodel. We proberen ontdubbeling uit te voeren, zodat er meer dan één keer meldingen worden bezorgd op een apparaat. Registraties worden gecontroleerd om ervoor te zorgen dat er slechts één bericht per apparaat-id wordt verzonden voordat het naar de pushmeldingsservice wordt verzonden.

Elke batch wordt verzonden naar de pushmeldingsservice, die de registraties op zijn beurt accepteert en valideert. Tijdens dit proces is het mogelijk dat de pushmeldingsservice een fout detecteert met een of meer registraties in een batch. De pushmeldingsservice retourneert vervolgens een fout bij Notification Hubs en het proces stopt. De pushmeldingsservice laat die batch volledig vallen. Dit geldt met name voor APNs, die gebruikmaakt van een TCP-streamprotocol.

In dit geval wordt de foutieve registratie verwijderd uit de database. Vervolgens proberen we de levering van meldingen voor de rest van de apparaten in die batch opnieuw uit te voeren.

Voor meer informatie over de mislukte bezorgingspoging voor een registratie, kunt u de Notification Hubs REST API's per berichttelemetrie gebruiken: telemetrie van meldingen en PNS-feedback ophalen. Zie het voorbeeld van Send REST voor voorbeeldcode.

Problemen met pushmeldingsservice

Nadat de pushmeldingsservice de melding heeft ontvangen, wordt de melding bezorgd op het apparaat. Op dit moment heeft Notification Hubs geen controle over de levering van de melding aan het apparaat.

Omdat platformmeldingsservices robuust zijn, bereiken meldingen meestal binnen een paar seconden apparaten. Als de pushmeldingsservice wordt beperkt, past Notification Hubs een exponentieel back-off-strategie toe. Als de pushmeldingsservice 30 minuten onbereikbaar blijft, is er een beleid ingesteld om de berichten permanent te laten verlopen en te verwijderen.

Als een pushmeldingsservice een melding probeert te leveren, maar het apparaat offline is, wordt de melding opgeslagen door de pushmeldingsservice. Het wordt slechts gedurende een beperkte periode opgeslagen. De melding wordt bezorgd op het apparaat wanneer het apparaat beschikbaar is.

Elke app slaat slechts één recente melding op. Als er meerdere meldingen worden verzonden terwijl een apparaat offline is, zorgt elke nieuwe melding ervoor dat de laatste wordt verwijderd. Alleen de nieuwste melding wordt samenvoegen genoemd in APNs en samenvouwen in FCM. (FCM maakt gebruik van een samenvouwsleutel.) Wanneer het apparaat lang offline blijft, worden meldingen die voor het apparaat zijn opgeslagen, verwijderd. Zie APNs Overview and About FCM messages voor meer informatie.

Met Notification Hubs kunt u een coalescing-sleutel doorgeven via een HTTP-header met behulp van de algemene SendNotification-API. Voor de .NET SDK gebruikt SendNotificationAsyncu bijvoorbeeld . De SendNotification-API gebruikt ook HTTP-headers die worden doorgegeven aan de respectieve pushmeldingsservice.

Tips voor zelfdiagnose

Hier volgen paden voor het vaststellen van de hoofdoorzaak van verwijderde meldingen in Notification Hubs.

Referenties verifiëren

Ontwikkelaarsportal voor pushmeldingenservice

Controleer referenties in de respectieve push notification service developer portal (APNs, FCM, Windows Notification Service, enzovoort). Zie Zelfstudie: Meldingen verzenden naar Universeel Windows-platform apps met behulp van Azure Notification Hubs voor meer informatie.

Azure Portal

Als u de referenties wilt controleren en vergelijken met de referenties die u hebt verkregen via de ontwikkelaarsportal van de pushmeldingsservice, gaat u naar het tabblad Toegangsbeleid in Azure Portal.

Azure portal Access Policies

Registraties verifiëren

Visual Studio

In Visual Studio kunt u via Server Explorer verbinding maken met Azure om meerdere Azure-services, waaronder Notification Hubs, weer te geven en te beheren. Deze snelkoppeling is voornamelijk handig voor uw ontwikkel-/testomgeving.

Visual Studio Server Explorer

Server Explorer

U kunt alle registraties in uw hub bekijken en beheren. De registraties kunnen worden gecategoriseerd op platform, systeemeigen registratie of sjabloonregistratie, tag, service-id voor pushmeldingen, registratie-id en vervaldatum. U kunt ook een registratie op deze pagina bewerken. Het is vooral handig voor het bewerken van tags.

Klik met de rechtermuisknop op de Notification Hub in Server Explorer en selecteer Diagnose.

Visual Studio Server Explorer: Diagnose menu

U ziet de volgende pagina:

Visual Studio: Diagnose page

Ga naar de pagina Apparaatregistraties :

Visual Studio: Device Registrations

U kunt de pagina Verzenden testen gebruiken om een testmeldingsbericht te verzenden:

Visual Studio: Test Send

Notitie

Gebruik Visual Studio om registraties alleen tijdens de ontwikkeling/test te bewerken en met een beperkt aantal registraties. Als u uw registraties bulksgewijs wilt bewerken, kunt u overwegen om de functionaliteit voor export- en importregistratie te gebruiken die wordt beschreven in Procedure: Registraties exporteren en wijzigen in bulk.

Service Bus Explorer

Veel klanten gebruiken Service Bus Explorer om hun Notification Hubs weer te geven en te beheren. Service Bus Explorer is een opensource-project.

Berichtmeldingen verifiëren

Azure Portal

Als u een testmelding naar uw clients wilt verzenden zonder dat er een back-end van de service is en wordt uitgevoerd, selecteert u Onder ONDERSTEUNING en PROBLEEMOPLOSSING test verzenden.

Test Send functionality in Azure

Visual Studio

U kunt ook testmeldingen verzenden vanuit Visual Studio.

Test Send functionality in Visual Studio

Fouten opsporen in mislukte meldingen en het resultaat van meldingen controleren

Eigenschap EnableTestSend

Wanneer u een melding verzendt via Notification Hubs, wordt de melding in eerste instantie in de wachtrij geplaatst. Notification Hubs bepaalt de juiste doelen en verzendt de melding vervolgens naar de pushmeldingsservice. Als u de REST API of een van de client-SDK's gebruikt, betekent het retourneren van de verzendaanroep alleen dat het bericht in de wachtrij staat met Notification Hubs. Het biedt geen inzicht in wat er is gebeurd wanneer Notification Hubs de melding uiteindelijk naar de pushmeldingsservice heeft verzonden.

Als uw melding niet op het clientapparaat aankomt, is er mogelijk een fout opgetreden wanneer Notification Hubs heeft geprobeerd deze te leveren aan de pushmeldingsservice. De grootte van de nettolading kan bijvoorbeeld groter zijn dan het maximum dat is toegestaan door de pushmeldingsservice of de referenties die zijn geconfigureerd in Notification Hubs, zijn mogelijk ongeldig.

Als u inzicht wilt krijgen in fouten in de pushmeldingsservice, kunt u de eigenschap EnableTestSend gebruiken. Deze eigenschap wordt automatisch ingeschakeld wanneer u testberichten verzendt vanuit de portal of Visual Studio-client. U kunt deze eigenschap gebruiken om gedetailleerde informatie over foutopsporing en ook via API's weer te geven. Op dit moment kunt u deze gebruiken in de .NET SDK. Deze wordt uiteindelijk toegevoegd aan alle client-SDK's.

Als u de EnableTestSend eigenschap wilt gebruiken met de REST-aanroep, voegt u een queryreeksparameter met de naam Test toe aan het einde van de verzendoproep. Voorbeeld:

https://mynamespace.servicebus.windows.net/mynotificationhub/messages?api-version=2013-10&test

Voorbeeld van .NET SDK

Hier volgt een voorbeeld van het gebruik van de .NET SDK om een systeemeigen pop-upmelding (pop-upmelding) te verzenden:

NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(connString, hubName);
var result = await hub.SendWindowsNativeNotificationAsync(toast);
Console.WriteLine(result.State);

Aan het einde van de uitvoering geeft result.State u gewoon aan Enqueued. De resultaten bieden geen inzicht in wat er met uw pushmelding is gebeurd.

Vervolgens kunt u de EnableTestSend booleaanse eigenschap gebruiken. Gebruik de eigenschap tijdens het EnableTestSend initialiseren NotificationHubClient om een gedetailleerde status te krijgen over fouten in de pushmeldingsservice die optreden wanneer de melding wordt verzonden. Het verzenden van de oproep duurt extra tijd om terug te keren, omdat er eerst Notification Hubs nodig zijn om de melding te verzenden naar de pushmeldingsservice.

    bool enableTestSend = true;
    NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(connString, hubName, enableTestSend);

    var outcome = await hub.SendWindowsNativeNotificationAsync(toast);
    Console.WriteLine(outcome.State);

    foreach (RegistrationResult result in outcome.Results)
    {
        Console.WriteLine(result.ApplicationPlatform + "\n" + result.RegistrationId + "\n" + result.Outcome);
    }

Voorbeelduitvoer

DetailedStateAvailable
windows
7619785862101227384-7840974832647865618-3
The Token obtained from the Token Provider is wrong

Dit bericht geeft aan dat de referenties die zijn geconfigureerd in Notification Hubs ongeldig zijn of dat er een probleem is met de registraties in de hub. Verwijder deze registratie en laat de client de registratie opnieuw maken voordat het bericht wordt verzonden.

Notitie

Het gebruik van de EnableTestSend eigenschap wordt sterk beperkt. Gebruik deze optie alleen in een ontwikkel-/testomgeving en met een beperkte set registraties. Foutopsporingsmeldingen worden verzonden naar slechts 10 apparaten. Er is ook een limiet voor het verwerken van foutopsporings verzendt, op 10 per minuut. Foutopsporingsmeldingen worden ook uitgesloten van de SLA van Azure Notification Hubs.

Telemetrie controleren

Azure Portal

In de portal kunt u een kort overzicht krijgen van alle activiteiten in uw Notification Hub.

  1. Op het tabblad Overzicht ziet u een geaggregeerde weergave van registraties, meldingen en fouten per platform.

    Notification Hubs overview dashboard

  2. Op het tabblad Activiteitenlogboek kunt u andere platformspecifieke metrische gegevens toevoegen voor een dieper overzicht. U kunt specifiek kijken naar fouten die worden geretourneerd wanneer Notification Hubs de melding probeert te verzenden naar de pushmeldingsservice.

    Azure portal activity log

  3. Bekijk op het tabblad Overzicht eerst binnenkomende berichten, registratiebewerkingen en geslaagde meldingen. Ga vervolgens naar het tabblad per platform om fouten te bekijken die specifiek zijn voor die pushmeldingsservice.

  4. Als de verificatie-instellingen voor uw Notification Hub onjuist zijn, wordt het bericht PNS-verificatiefout weergegeven. Het is een goede indicatie om de referenties van de pushmeldingsservice te controleren.

Programmatische toegang

Zie Programmatische toegang voor meer informatie over programmatische toegang.

Notitie

Verschillende telemetriefuncties, zoals het exporteren en importeren van registraties en telemetrietoegang via API's, zijn alleen beschikbaar in de Standard-servicelaag. Als u deze functies probeert te gebruiken vanuit de servicelaag Gratis of Basic, krijgt u een uitzonderingsbericht als u de SDK gebruikt. U krijgt een HTTP 403-fout (Verboden) als u de functies rechtstreeks vanuit de REST API's gebruikt.

Als u telemetriegerelateerde functies wilt gebruiken, moet u eerst controleren in De Azure-portal dat u de Standard-servicelaag gebruikt.