Share via


Elvetett értesítések diagnosztizálása az Azure Notification Hubsban

Az Azure Notification Hubs szolgáltatással kapcsolatos gyakori kérdés az, hogyan háríthatja el a hibaelhárítást, ha egy alkalmazás értesítései nem jelennek meg az ügyféleszközökön. Az ügyfelek tudni szeretnék, hogy hol és miért törölték az értesítéseket, és hogyan oldják meg a problémát. Ez a cikk azt ismerteti, hogy miért eshetnek el az értesítések, vagy miért nem érkeznek meg az eszközök. Azt is ismerteti, hogyan állapítható meg a kiváltó ok.

Fontos először megérteni, hogy a Notification Hubs hogyan küld le értesítéseket egy eszközre.

Notification Hubs architecture

Egy tipikus küldési értesítési folyamatban a rendszer az üzenetet az alkalmazás háttérrendszeréből küldi el a Notification Hubsnak. A Notification Hubs feldolgozza az összes regisztrációt. Figyelembe veszi a konfigurált címkéket és címkekifejezéseket a célok meghatározásához. A cél azok a regisztrációk, amelyeknek leküldéses értesítést kell kapniuk. Ezek a regisztrációk a támogatott platformok bármelyikére kiterjedhetnek: Android, Baidu (Android-eszközök Kínában), Fire OS (Amazon) iOS, Windows és Windows Phone-telefon.

A célok meghatározásával a Notification Hubs leküldéses értesítéseket küld az eszközplatform leküldéses értesítési szolgáltatásának . Ilyenek például az iOS és macOS rendszerhez készült Apple Push Notification szolgáltatás (APN-ek), androidos eszközökhöz készült Firebase Cloud Messaging (FCM). A Notification Hubs több regisztrációs kötegre osztott értesítéseket küld le. Hitelesítést hajt végre a megfelelő leküldéses értesítési szolgáltatással az Azure Portalon beállított hitelesítő adatok alapján, a Notification Hub konfigurálása területen. A leküldéses értesítési szolgáltatás ezután továbbítja az értesítéseket a megfelelő ügyféleszközöknek.

Az értesítés kézbesítésének utolsó szakasza a platform leküldéses értesítési szolgáltatása és az eszköz között van. Az értesítések kézbesítése a leküldéses értesítési folyamat négy szakaszának bármelyikében meghiúsulhat (ügyfél, alkalmazás háttérrendszere, Notification Hubs és a platform leküldéses értesítési szolgáltatása). A Notification Hubs architektúrájáról további információt a Notification Hubs áttekintésében talál.

Az értesítések kézbesítésének meghiúsulása a kezdeti tesztelési/előkészítési fázisban fordulhat elő. Az ebben a szakaszban elvetett értesítések konfigurációs problémát jelezhetnek. Ha az értesítések kézbesítésének sikertelensége éles környezetben történik, előfordulhat, hogy az értesítések egy része vagy egésze el lesz ejtve. Ebben az esetben egy mélyebb alkalmazás- vagy üzenetkezelési mintaproblémát jelez.

A következő szakasz azokat a forgatókönyveket vizsgálja, amelyekben az értesítések elvethetők, a gyakoritól a ritkaig.

A Notification Hubs helytelen konfigurációja

Ha értesítéseket szeretne küldeni a megfelelő leküldéses értesítési szolgáltatásnak, a Notification Hubsnak hitelesítenie kell magát az alkalmazás kontextusában. Létre kell hoznia egy fejlesztői fiókot a célplatform értesítési szolgáltatásával (Microsoft, Apple, Google stb.). Ezután regisztrálnia kell az alkalmazást az operációs rendszeren, ahol egy jogkivonatot vagy kulcsot kap, amellyel a cél PNS-vel dolgozhat.

Platform hitelesítő adatait hozzá kell adnia az Azure Portalhoz. Ha nem érkeznek értesítések az eszközhöz, az első lépés annak biztosítása, hogy a megfelelő hitelesítő adatok konfigurálva legyenek a Notification Hubsban. A hitelesítő adatoknak meg kell egyeznie a platformspecifikus fejlesztői fiókban létrehozott alkalmazással.

A folyamat végrehajtására vonatkozó részletes útmutatásért tekintse meg az Azure Notification Hubs használatának első lépéseit.

Az alábbiakban néhány gyakori helytelen konfigurációt talál az alábbiak kereséséhez:

Értesítési központ nevének helye

Győződjön meg arról, hogy az értesítési központ neve (elírások nélkül) megegyezik az alábbi helyeken:

  • Hol regisztrál az ügyfélről?
  • Ahol értesítéseket küld a háttérrendszerből
  • A leküldéses értesítési szolgáltatás hitelesítő adatainak konfigurálása

Győződjön meg arról, hogy a megfelelő közös hozzáférésű jogosultságkód-konfigurációs sztringeket használja az ügyfélen és az alkalmazás háttérrendszerén. Általában a DefaultListenSharedAccessSignature parancsot kell használnia az ügyfélen, a DefaultFullSharedAccessSignature-t pedig az alkalmazás háttérrendszerén. Ez engedélyeket ad az értesítések Notification Hubsba való küldéséhez.

APN-konfiguráció

Két különböző központot kell fenntartania: az egyiket éles környezetben, a másikat pedig tesztelésre. A tesztkörnyezetben használt tanúsítványt fel kell töltenie egy másik központba, mint az éles környezetben használni kívánt tanúsítvány/központ. Ne próbáljon különböző típusú tanúsítványokat feltölteni ugyanarra a központra. Ez értesítési hibákat fog okozni.

Ha véletlenül különböző típusú tanúsítványokat tölt fel ugyanarra a központra, törölje a központot, és kezdjen új központtal. Ha valamilyen okból nem tudja törölni a központot, legalább az összes meglévő regisztrációt törölnie kell a központból.

FCM-konfiguráció

Megjegyzés:

A Firebase Cloud Messaging elavulásával és a migrálással kapcsolatos lépésekről a Google Firebase Cloud Messaging migrálásával kapcsolatos információk találhatók.

  1. Győződjön meg arról, hogy a Firebase-ből beszerzett kiszolgálókulcs megegyezik az Azure Portalon regisztrált kiszolgálói kulccsal.

    Firebase server key

  2. Győződjön meg arról, hogy konfigurálta a projektazonosítót az ügyfélen. A Projektazonosító értékét a Firebase irányítópultján szerezheti be.

    Firebase Project ID

Alkalmazásproblémák

Címkék és címkekifejezések

Ha címkéket vagy címkekifejezéseket használ a célközönség szegmentálásához, lehetséges, hogy az értesítés küldésekor nem található cél. Ez a hiba a küldési hívásban megadott címkéken vagy címkekifejezéseken alapul.

Tekintse át a regisztrációkat, és győződjön meg arról, hogy a címkék egyeznek az értesítés küldésekor. Ezután ellenőrizze az értesítési visszaigazolást csak azoktól az ügyfelektől, amelyek rendelkeznek ezekkel a regisztrációkkal.

Tegyük fel például, hogy a Notification Hubs összes regisztrációja a "Politika" címkét használja. Ha ezután "Sports" címkével ellátott értesítést küld, az értesítés nem lesz elküldve semmilyen eszközre. Összetett eset lehet olyan címkekifejezés, amelyet az "A címke" vagy a "B" címke használatával regisztrált, de ön az "A> B címke" címkét célozta meg. A cikk öndiagnosztikai tippek szakasza bemutatja, hogyan tekintheti át regisztrációit és címkéit.

Sablonokkal kapcsolatos problémák

Ha sablonokat használ, győződjön meg arról, hogy a sablonokban leírt irányelveket követi.

Érvénytelen regisztrációk

Ha az értesítési központ megfelelően lett konfigurálva, és a címkék vagy címkekifejezések helyesen lettek használva, a rendszer érvényes célokat talál. Ezekre a célokra értesítéseket kell küldeni. A Notification Hubs ezután több feldolgozási köteget is elindít párhuzamosan. Minden köteg üzeneteket küld a regisztrációk egy csoportjának.

Megjegyzés:

Mivel a Notification Hubs párhuzamosan dolgozza fel a kötegeket, az értesítések kézbesítési sorrendje nem garantált.

A Notification Hubs egy "at-most-once" üzenetkézbesítési modellre van optimalizálva. Deduplikációt kísérelünk meg, hogy egyetlen értesítés se legyen többször kézbesítve egy eszközre. A regisztrációk ellenőrzik, hogy eszközazonosítónként csak egy üzenet legyen elküldve a leküldéses értesítési szolgáltatásnak való küldés előtt.

A rendszer minden köteget elküld a leküldéses értesítési szolgáltatásnak, amely viszont elfogadja és ellenőrzi a regisztrációkat. A folyamat során előfordulhat, hogy a leküldéses értesítési szolgáltatás hibát észlel egy vagy több regisztrációval egy kötegben. A leküldéses értesítési szolgáltatás ezután hibát ad vissza a Notification Hubsnak, és a folyamat leáll. A leküldéses értesítési szolgáltatás teljesen elveti ezt a köteget. Ez különösen igaz az APN-ekre, amelyek TCP stream protokollt használnak.

Ebben az esetben a rendszer eltávolítja a hibás regisztrációt az adatbázisból. Ezután újra megkísérljük az értesítés kézbesítését az adott köteg többi eszközére vonatkozóan.

Ha további hibainformációt szeretne kapni a regisztráció sikertelen kézbesítési kísérletéről, használja a Notification Hubs REST API-jait üzenettelemetria szerint: Értesítési üzenet telemetriai adatainak lekérése és PNS-visszajelzések. A mintakódért lásd a REST-példa küldése című témakört.

Leküldéses értesítési szolgáltatással kapcsolatos problémák

Miután a leküldéses értesítési szolgáltatás megkapta az értesítést, elküldi az értesítést az eszköznek. Ezen a ponton a Notification Hubs nem szabályozhatja az értesítés eszközre történő kézbesítését.

Mivel a platformértesítési szolgáltatások robusztusak, az értesítések általában néhány másodperc alatt érik el az eszközöket. Ha a leküldéses értesítési szolgáltatás szabályozás alatt áll, a Notification Hubs exponenciális háttérstratégiát alkalmaz. Ha a leküldéses értesítési szolgáltatás 30 percig nem érhető el, érvényben van egy szabályzat, amely lejár, és véglegesen elveti az üzeneteket.

Ha egy leküldéses értesítési szolgáltatás megkísérli kézbesíteni az értesítést, de az eszköz offline állapotban van, az értesítést a leküldéses értesítési szolgáltatás tárolja. A rendszer csak korlátozott ideig tárolja. Az értesítés akkor érkezik az eszközre, amikor az eszköz elérhetővé válik.

Minden alkalmazás csak egy legutóbbi értesítést tárol. Ha egy eszköz offline állapotban több értesítést is küld, minden új értesítés elveti az utolsót. Csak a legújabb értesítés megtartását nevezik szenesítésnek APN-ekben, és összecsukás az FCM-ben. (Az FCM összecsukókulcsot használ.) Ha az eszköz hosszú ideig offline állapotban marad, a rendszer elveti az eszközhöz tárolt értesítéseket. További információkért tekintse meg az APN-ek áttekintését és az FCM-üzenetekről szóló témakört.

A Notification Hubs segítségével http-fejlécen keresztül továbbíthat egy szenesítő kulcsot az általános SendNotification API használatával. A .NET SDK-hoz például a .NET SDK-t használná SendNotificationAsync. A SendNotification API a megfelelő leküldéses értesítési szolgáltatásnak átadott HTTP-fejléceket is átveszi.

Öndiagnosztikai tippek

Az alábbi útvonalakon diagnosztizálhatja az elvetett értesítések kiváltó okát a Notification Hubsban.

Hitelesítő adatok ellenőrzése

Leküldéses értesítési szolgáltatás fejlesztői portálja

Ellenőrizze a hitelesítő adatokat a megfelelő leküldéses értesítési szolgáltatás fejlesztői portálján (APN-ek, FCM, Windows Notification Service stb.). További információ: Oktatóanyag: Értesítések küldése Univerzális Windows-platform alkalmazásoknak az Azure Notification Hubs használatával.

Azure Portal

A leküldéses értesítési szolgáltatás fejlesztői portálján beszerzett hitelesítő adatok áttekintéséhez és egyeztetéséhez nyissa meg az Azure Portal Hozzáférési szabályzatok lapját.

Azure portal Access Policies

Regisztrációk ellenőrzése

Visual Studio

A Visual Studióban a Server Exploreren keresztül csatlakozhat az Azure-hoz több Azure-szolgáltatás, köztük a Notification Hubs megtekintéséhez és kezeléséhez. Ez a parancsikon elsősorban a fejlesztési/tesztelési környezetben hasznos.

Visual Studio Server Explorer

Server Explorer

A központ összes regisztrációját megtekintheti és kezelheti. A regisztrációk a platform, a natív vagy sablonregisztráció, a címke, a leküldéses értesítési szolgáltatás azonosítója, a regisztrációs azonosító és a lejárati dátum szerint kategorizálhatók. Ezen a lapon is szerkesztheti a regisztrációt. Különösen hasznos címkék szerkesztéséhez.

Kattintson a jobb gombbal az értesítési központra a Kiszolgálókezelőben, és válassza a Diagnosztizálás lehetőséget.

Visual Studio Server Explorer: Diagnose menu

A következő oldal jelenik meg:

Visual Studio: Diagnose page

Váltás az Eszközregisztrációk lapra :

Visual Studio: Device Registrations

A Tesztküldés lapon elküldheti a tesztértesítési üzenetet:

Visual Studio: Test Send

Megjegyzés:

A Visual Studióval csak a fejlesztés/tesztelés során és korlátozott számú regisztrációval szerkesztheti a regisztrációkat. Ha tömegesen kell szerkesztenie a regisztrációkat, fontolja meg a Regisztrációk tömeges exportálása és módosítása című cikkben leírt exportálási és importálási regisztrációs funkciót.

Service Bus Explorer

Sok ügyfél a Service Bus Explorer használatával tekinti meg és kezeli az értesítési központokat. A Service Bus Explorer egy nyílt forráskódú projekt.

Üzenetértesítések ellenőrzése

Azure Portal

Ha tesztértesítést szeretne küldeni az ügyfeleknek anélkül, hogy a szolgáltatás biztonsági mentése és futtatása befejeződjön, a TÁMOGATÁS + HIBAELHÁRÍTÁS területen válassza a Küldés tesztelése lehetőséget.

Test Send functionality in Azure

Visual Studio

Tesztértesítéseket is küldhet a Visual Studióból.

Test Send functionality in Visual Studio

Sikertelen értesítések hibakeresése és az értesítés eredményének áttekintése

EnableTestSend tulajdonság

Amikor értesítést küld a Notification Hubson keresztül, az értesítés kezdetben várólistára kerül. A Notification Hubs meghatározza a megfelelő célokat, majd elküldi az értesítést a leküldéses értesítési szolgáltatásnak. Ha REST API-t vagy ügyféloldali SDK-t használ, a küldési hívás visszatérése csak azt jelenti, hogy az üzenet várólistára kerül a Notification Hubsban. Nem nyújt betekintést abba, hogy mi történt, amikor a Notification Hubs végül elküldte az értesítést a leküldéses értesítési szolgáltatásnak.

Ha az értesítés nem érkezik meg az ügyféleszközre, hiba történhetett, amikor a Notification Hubs megpróbálta kézbesíteni a leküldéses értesítési szolgáltatásnak. Előfordulhat például, hogy a hasznos adat mérete meghaladja a leküldéses értesítési szolgáltatás által megengedett maximális értéket, vagy a Notification Hubsban konfigurált hitelesítő adatok érvénytelenek lehetnek.

A leküldéses értesítési szolgáltatás hibáinak megismeréséhez használja az EnableTestSend tulajdonságot . Ez a tulajdonság automatikusan engedélyezve lesz, amikor tesztüzeneteket küld a portálról vagy a Visual Studio-ügyfélről. Ezzel a tulajdonságkal részletes hibakeresési információkat és API-kat is megtekinthet. Jelenleg a .NET SDK-ban használhatja. A rendszer végül hozzáadja az összes ügyféloldali SDK-hoz.

Ha a EnableTestSend tulajdonságot REST-hívással szeretné használni, fűzze hozzá a teszt nevű lekérdezési sztring paramétert a küldési hívás végéhez. Például:

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

.NET SDK-példa

Íme egy példa arra, hogy a .NET SDK használatával natív előugró (bejelentési) értesítést küld:

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

A végrehajtás result.State végén egyszerűen kimondja Enqueued. Az eredmények nem nyújtanak betekintést abba, hogy mi történt a leküldéses értesítéssel.

Ezután használhatja a EnableTestSend logikai tulajdonságot. Az inicializálás NotificationHubClient során használja a EnableTestSend tulajdonságot, hogy részletes állapotot kapjon a leküldéses értesítési szolgáltatás azon hibáiról, amelyek az értesítés elküldésekor fordulnak elő. A küldési hívás visszatérése további időt vesz igénybe, mivel először a Notification Hubsnak kell kézbesítenie az értesítést a leküldéses értesítési szolgáltatásnak.

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

Példakimenet

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

Ez az üzenet azt jelzi, hogy a Notification Hubsban konfigurált hitelesítő adatok érvénytelenek, vagy hogy probléma van a központi regisztrációkkal. Törölje ezt a regisztrációt, és hagyja, hogy az ügyfél újra létrehozza a regisztrációt az üzenet elküldése előtt.

Megjegyzés:

EnableTestSend A tulajdonság használata erősen szabályozva van. Ezt a lehetőséget csak fejlesztési/tesztelési környezetben és korlátozott számú regisztrációval használhatja. A hibakeresési értesítéseket a rendszer csak 10 eszközre küldi. A hibakeresési küldések feldolgozására is van korlát, percenként 10-nél. A hibakeresési értesítések szintén ki vannak zárva az Azure Notification Hubs SLA-jából.

Telemetria áttekintése

Azure Portal

A portálon gyorsan áttekintheti az értesítési központban található összes tevékenységet.

  1. Az Áttekintés lapon a regisztrációk, értesítések és hibák összesített nézete látható platformonként.

    Notification Hubs overview dashboard

  2. A Tevékenységnapló lapon további platformspecifikus metrikákat is hozzáadhat a részletesebb megjelenéshez. Kifejezetten azokat a hibákat tekintheti meg, amelyek akkor jelennek meg, amikor a Notification Hubs megpróbálja elküldeni az értesítést a leküldéses értesítési szolgáltatásnak.

    Azure portal activity log

  3. Az Áttekintés lapon először tekintse át a bejövő üzeneteket, a regisztrációs műveleteket és a sikeres értesítéseket. Ezután lépjen a platformonkénti lapra az adott leküldéses értesítési szolgáltatásra jellemző hibák áttekintéséhez.

  4. Ha az értesítési központ hitelesítési beállításai helytelenek, megjelenik a PNS-hitelesítési hiba üzenet. Ez jó jelzés a leküldéses értesítési szolgáltatás hitelesítő adatainak ellenőrzésére.

Szoftveres hozzáférés

A programozott hozzáféréssel kapcsolatos további információkért lásd: Programozott hozzáférés.

Megjegyzés:

Számos telemetriával kapcsolatos funkció, például regisztrációk exportálása és importálása, valamint telemetria-hozzáférés API-k használatával, csak a Standard szolgáltatási szinten érhető el. Ha ezeket a szolgáltatásokat az ingyenes vagy az alapszintű szolgáltatási szintről próbálja használni, kivételüzenet jelenik meg, ha az SDK-t használja. HTTP 403 (Tiltott) hibaüzenet jelenik meg, ha a funkciókat közvetlenül a REST API-kból használja.

A telemetriával kapcsolatos funkciók használatához először győződjön meg arról az Azure Portalon, hogy a Standard szolgáltatási szintet használja.