Diagnostika vynechaných oznámení ve službě Azure Notification Hubs

Běžnou otázkou týkající se služby Azure Notification Hubs je řešení potíží, když se oznámení z aplikace nezobrazují na klientských zařízeních. Zákazníci chtějí vědět, kde a proč se oznámení zahodila a jak problém vyřešit. Tento článek popisuje, proč se oznámení můžou zařízením vynechat nebo je nedostanou. Vysvětluje také, jak určit původní příčinu.

Je důležité nejprve pochopit, jak Notification Hubs odesílá oznámení do zařízení.

Notification Hubs architecture

V typickém toku odesílání oznámení se zpráva odešle z back-endu aplikace do Notification Hubs. Notification Hubs zpracovává všechny registrace. Bere v úvahu nakonfigurované značky a výrazy značek k určení cílů. Cíle jsou registrace, které potřebují přijímat nabízená oznámení. Tyto registrace můžou zahrnovat jakoukoli z našich podporovaných platforem: Android, Baidu (zařízení s Androidem v Číně), Fire OS (Amazon) iOS, Windows a Windows Telefon.

S vytvořenými cíli služba Notification Hubs odesílá oznámení službě nabízených oznámení pro platformu zařízení. Mezi příklady patří služba Apple Push Notification (APNs) pro iOS a macOS a Firebase Cloud Messaging (FCM) pro zařízení s Androidem. Notification Hubs odesílá oznámení rozdělená mezi více dávek registrací. Ověřuje se v příslušné službě nabízených oznámení na základě přihlašovacích údajů, které jste nastavili na webu Azure Portal, v části Konfigurovat centrum oznámení. Služba nabízených oznámení pak předá oznámení příslušným klientským zařízením.

Poslední částí doručení oznámení je služba nabízených oznámení platformy a zařízení. Doručení oznámení může selhat v libovolné ze čtyř fází procesu nabízeného oznámení (klient, back-end aplikace, Notification Hubs a služba nabízených oznámení platformy). Další informace o architektuře Notification Hubs najdete v tématu Přehled služby Notification Hubs.

Během počáteční fáze testování nebo přípravy může dojít k selhání doručování oznámení. Vyřazená oznámení v této fázi můžou znamenat problém s konfigurací. Pokud dojde k selhání doručování oznámení v produkčním prostředí, některá nebo všechna oznámení se můžou vynechat. V tomto případě je uveden hlubší problém se vzorem aplikace nebo zasílání zpráv.

V další části se podíváme na scénáře, ve kterých se můžou oznámení vynechat, od běžných po vzácné.

Chybná konfigurace Notification Hubs

Aby bylo možné odesílat oznámení příslušné službě nabízených oznámení, musí se služba Notification Hubs ověřit v kontextu vaší aplikace. Musíte vytvořit vývojářský účet se službou oznámení cílové platformy (Microsoft, Apple, Google atd.). Pak musíte aplikaci zaregistrovat v operačním systému, kde získáte token nebo klíč, který používáte pro práci s cílovým PNS.

Přihlašovací údaje platformy musíte přidat na web Azure Portal. Pokud zařízení nedosahují žádná oznámení, prvním krokem je zajistit, aby se ve službě Notification Hubs nakonfigurovaly správné přihlašovací údaje. Přihlašovací údaje musí odpovídat aplikaci vytvořené v rámci vývojářského účtu specifického pro platformu.

Podrobné pokyny k dokončení tohoto procesu najdete v tématu Začínáme se službou Azure Notification Hubs.

Tady je několik běžných chybných konfigurací, které je potřeba zkontrolovat:

Umístění názvu centra oznámení

Ujistěte se, že název centra oznámení (bez překlepů) je v každém z těchto umístění stejný:

  • Kde se registrujete z klienta
  • Kam odesíláte oznámení z back-endu
  • Kde jste nakonfigurovali přihlašovací údaje služby nabízených oznámení

Ujistěte se, že v klientovi a back-endu aplikace používáte správné konfigurační řetězce sdíleného přístupového podpisu. Obecně platí, že je nutné použít DefaultListenSharedAccessSignature v klientovi a DefaultFullSharedAccessSignature na back-endu aplikace. Tím se udělí oprávnění k odesílání oznámení do Notification Hubs.

Konfigurace APN

Musíte udržovat dvě různá centra: jedno pro produkční prostředí a druhé pro účely testování. Certifikát, který používáte v prostředí sandboxu, musíte nahrát do samostatného centra, než je certifikát nebo centrum, které budete používat v produkčním prostředí. Nepokoušejte se nahrát různé typy certifikátů do stejného centra. Způsobí selhání oznámení.

Pokud neúmyslně nahrajete různé typy certifikátů do stejného centra, měli byste centrum odstranit a začít znovu s novým centrem. Pokud z nějakého důvodu nemůžete centrum odstranit, musíte alespoň odstranit všechny existující registrace z centra.

Konfigurace FCM

Poznámka:

Informace o vyřazení a migraci služby Firebase Cloud Messaging najdete v tématu Migrace služby Google Firebase Cloud Messaging.

  1. Ujistěte se, že klíč serveru, který jste získali z Firebase, odpovídá klíči serveru, který jste zaregistrovali na webu Azure Portal.

    Firebase server key

  2. Ujistěte se, že jste na klientovi nakonfigurovali ID projektu. Hodnotu ID projektu můžete získat z řídicího panelu Firebase.

    Firebase Project ID

Problémy s aplikací

Značky a výrazy značek

Pokud k segmentování cílové skupiny používáte značky nebo výrazy značek, je možné, že při odesílání oznámení se nenajde žádný cíl. Tato chyba je založená na zadaných značkách nebo výrazech značek ve vašem volání pro odesílání.

Zkontrolujte své registrace a ujistěte se, že se značky při odesílání oznámení shodují. Pak ověřte příjem oznámení pouze od klientů, kteří mají tyto registrace.

Předpokládejme například, že všechny vaše registrace ve službě Notification Hubs používají značku "Politika". Pokud pak odešlete oznámení se značkou Sport, oznámení se neodešle na žádné zařízení. Složitý případ může zahrnovat výrazy značek, které jste zaregistrovali pomocí značky A nebo Značky B, ale cílíte na značku A && Značka B. Část Tipy pro samodiagnostiku dále v článku ukazuje, jak zkontrolovat registrace a jejich značky.

Problémy se šablonou

Pokud používáte šablony, ujistěte se, že dodržujete pokyny popsané v šablonách.

Neplatné registrace

Pokud bylo centrum oznámení správně nakonfigurované a správně se použily značky nebo výrazy značek, jsou nalezeny platné cíle. Těmto cílům by se měla odesílat oznámení. Notification Hubs pak paralelně aktivuje několik dávek zpracování. Každá dávka odesílá zprávy do sady registrací.

Poznámka:

Vzhledem k tomu, že Notification Hubs zpracovává dávky paralelně, není zaručeno pořadí doručení oznámení.

Služba Notification Hubs je optimalizovaná pro model doručování zpráv "nejvíce jednou". Pokusíme se odstranění duplicitních dat, aby se do zařízení nedoručila žádná oznámení více než jednou. Registrace se kontrolují, aby se před odesláním do služby nabízených oznámení posílala jenom jedna zpráva na identifikátor zařízení.

Každá dávka se odešle do služby nabízených oznámení, která zase přijme a ověří registrace. Během tohoto procesu je možné, že služba nabízených oznámení zjistí chybu s jednou nebo více registracemi v dávce. Služba nabízených oznámení pak vrátí do Notification Hubs chybu a proces se zastaví. Služba nabízených oznámení úplně zahodí danou dávku. To platí zejména u sítí APN, které používají protokol streamu TCP.

V tomto případě se z databáze odebere chybující registrace. Pak zopakujeme doručení oznámení pro zbytek zařízení v dané dávce.

Pokud chcete získat další informace o neúspěšném pokusu o doručení proti registraci, můžete použít rozhraní REST API služby Notification Hubs na telemetrii zpráv: Získání telemetrie zpráv oznámení a zpětné vazby PNS. Ukázkový kód najdete v příkladu send REST.

Problémy se službou nabízených oznámení

Jakmile služba nabízených oznámení obdrží oznámení, doručí oznámení do zařízení. V tomto okamžiku nemá Notification Hubs žádnou kontrolu nad doručením oznámení do zařízení.

Vzhledem k tomu, že služby oznámení platformy jsou robustní, oznámení mají tendenci se během několika sekund spojit se zařízeními. Pokud je služba nabízených oznámení omezování, služba Notification Hubs použije exponenciální strategii zpětného vypnutí. Pokud služba nabízených oznámení zůstane po dobu 30 minut nedostupná, je k dispozici zásada, která má vypršet a zprávy trvale vypustit.

Pokud se služba nabízených oznámení pokusí doručit oznámení, ale zařízení je offline, oznámení se uloží službou nabízených oznámení. Ukládá se jenom po omezenou dobu. Oznámení se do zařízení doručí, jakmile bude zařízení dostupné.

Každá aplikace ukládá jenom jedno nedávné oznámení. Pokud se odešle více oznámení, když je zařízení offline, každé nové oznámení způsobí, že se poslední oznámení zahodí. Udržování pouze nejnovějšího oznámení se nazývá sloučit v APN a sbalovat v FCM. (FCM používá sbalovací klíč.) Když zařízení zůstane po dlouhou dobu offline, oznámení uložená pro zařízení se zahodí. Další informace najdete v tématu ApNs – přehled a informace o zprávách FCM.

Pomocí Notification Hubs můžete předat klíč sloučení prostřednictvím hlavičky HTTP pomocí obecného rozhraní API SendNotification. Například pro sadu .NET SDK byste použili SendNotificationAsync. Rozhraní API SendNotification také přebírá hlavičky HTTP, které jsou předány příslušné službě nabízených oznámení.

Tipy pro samodiagnostiku

Tady jsou cesty k diagnostice původní příčiny vyřazených oznámení v Notification Hubs.

Ověření přihlašovacích údajů

Portál pro vývojáře služby nabízených oznámení

Ověřte přihlašovací údaje na portálu pro vývojáře příslušné služby nabízených oznámení (APNs, FCM, Služba oznámení systému Windows atd.). Další informace najdete v tématu Kurz: Odesílání oznámení do Univerzální platforma Windows aplikací pomocí služby Azure Notification Hubs.

portál Azure

Pokud chcete zkontrolovat a spárovat přihlašovací údaje s přihlašovacími údaji získanými z portálu pro vývojáře služby nabízených oznámení, přejděte na kartu Zásady přístupu na webu Azure Portal.

Azure portal Access Policies

Ověření registrací

Visual Studio

V sadě Visual Studio se můžete připojit k Azure prostřednictvím Průzkumníka serveru a zobrazit a spravovat více služeb Azure, včetně Notification Hubs. Tato zkratka je primárně užitečná pro vaše vývojové/testovací prostředí.

Visual Studio Server Explorer

Server Explorer

Můžete zobrazit a spravovat všechny registrace v centru. Registrace je možné kategorizovat podle platformy, nativní registrace nebo registrace šablony, značky, identifikátoru služby nabízených oznámení, ID registrace a data vypršení platnosti. Můžete také upravit registraci na této stránce. Je zvlášť užitečné pro úpravy značek.

V Průzkumníku serveru klikněte pravým tlačítkem na centrum oznámení a vyberte Diagnostikovat.

Visual Studio Server Explorer: Diagnose menu

Zobrazí se následující stránka:

Visual Studio: Diagnose page

Přepněte na stránku Registrace zařízení:

Visual Studio: Device Registrations

K odeslání testovací zprávy s oznámením můžete použít stránku Odeslat test:

Visual Studio: Test Send

Poznámka:

Pomocí sady Visual Studio můžete upravovat registrace pouze během vývoje/testování a s omezeným počtem registrací. Pokud potřebujete hromadně upravit registrace, zvažte použití funkce exportu a importu registrace popsané v tématu Postupy: Export a úprava registrací hromadně.

Service Bus Explorer

Mnoho zákazníků používá Service Bus Explorer k zobrazení a správě svých center oznámení. Service Bus Explorer je opensourcový projekt.

Ověření oznámení zpráv

portál Azure

Pokud chcete klientům poslat testovací oznámení, aniž by se služba zálohovala a spustila, vyberte v části SUPPORT + TROUBLESHOOTING možnost Testovací odeslání.

Test Send functionality in Azure

Visual Studio

Můžete také odesílat testovací oznámení ze sady Visual Studio.

Test Send functionality in Visual Studio

Ladění neúspěšných oznámení a kontrola výsledku oznámení

EnableTestSend – vlastnost

Když odešlete oznámení přes Notification Hubs, oznámení se zpočátku zařadí do fronty. Notification Hubs určuje správné cíle a pak odešle oznámení službě nabízených oznámení. Pokud používáte rozhraní REST API nebo některou z klientských sad SDK, návrat volání pro odesílání znamená, že zpráva se zařadí do fronty do služby Notification Hubs. Neposkytuje přehled o tom, co se stalo, když Notification Hubs oznámení nakonec odeslala službě nabízených oznámení.

Pokud oznámení nedorazí do klientského zařízení, mohlo dojít k chybě, když se centrum oznámení pokusilo doručit do služby nabízených oznámení. Například velikost datové části může překročit maximální povolenou službou nabízených oznámení nebo přihlašovací údaje nakonfigurované v Notification Hubs můžou být neplatné.

Pokud chcete získat přehled o chybách služby nabízených oznámení, můžete použít vlastnost EnableTestSend . Tato vlastnost je automaticky povolena při odesílání testovacích zpráv z portálu nebo klienta sady Visual Studio. Tuto vlastnost můžete použít k zobrazení podrobných informací o ladění a také prostřednictvím rozhraní API. V současné době ji můžete použít v sadě .NET SDK. Nakonec se přidá do všech klientských sad SDK.

Chcete-li použít EnableTestSend vlastnost s voláním REST, připojte na konec volání odeslání parametr řetězce dotazu s názvem test . Příklad:

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

Příklad sady .NET SDK

Tady je příklad použití sady .NET SDK k odeslání nativního automaticky otevíraného oznámení (informační zprávy):

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

Na konci provádění jednoduše result.State uvádí Enqueued. Výsledky neposkytují žádný přehled o tom, co se stalo s vaším nabízeným oznámením.

Dále můžete použít EnableTestSend logickou vlastnost. EnableTestSend Vlastnost při inicializaci NotificationHubClient použijte k získání podrobného stavu o chybách služby nabízených oznámení, ke kterým dochází při odeslání oznámení. Odeslání volání trvá delší dobu, protože k doručení oznámení službě nabízených oznámení nejprve potřebuje Notification Hubs.

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

Ukázkový výstup

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

Tato zpráva označuje, že přihlašovací údaje nakonfigurované v Notification Hubs jsou neplatné nebo že došlo k problému s registracemi v centru. Tuto registraci odstraňte a nechte klienta znovu vytvořit registraci před odesláním zprávy.

Poznámka:

EnableTestSend Použití vlastnosti je silně omezené. Tuto možnost použijte pouze ve vývojovém/testovacím prostředí a s omezenou sadou registrací. Ladicí oznámení se odesílají jenom na 10 zařízení. Existuje také omezení odesílání ladění při 10 minutách. Oznámení o ladění jsou také vyloučena ze smlouvy SLA služby Azure Notification Hubs.

Kontrola telemetrie

portál Azure

Na portálu můžete získat rychlý přehled o všech aktivitách v centru oznámení.

  1. Na kartě Přehled uvidíte agregované zobrazení registrací, oznámení a chyb podle platformy.

    Notification Hubs overview dashboard

  2. Na kartě Protokol aktivit můžete přidat další metriky specifické pro platformu pro podrobnější pohled. Můžete se podívat konkrétně na chyby, které se vrátí, když se Notification Hubs pokusí odeslat oznámení službě nabízených oznámení.

    Azure portal activity log

  3. Na kartě Přehled začněte kontrolou příchozích zpráv, operací registrace a úspěšných oznámení. Pak přejděte na kartu pro jednotlivé platformy a zkontrolujte chyby specifické pro danou službu nabízených oznámení.

  4. Pokud je nastavení ověřování pro vaše centrum oznámení nesprávné, zobrazí se zpráva Chyba ověřování PNS. Je dobré zkontrolovat přihlašovací údaje služby nabízených oznámení.

Programový přístup

Další informace o programovém přístupu najdete v tématu Programový přístup.

Poznámka:

Několik funkcí souvisejících s telemetrií, jako je export a import registrací a přístupu k telemetrii prostřednictvím rozhraní API, jsou k dispozici pouze na úrovni služby Standard. Pokud se pokusíte použít tyto funkce z úrovně služby Free nebo Basic, zobrazí se zpráva o výjimce, pokud používáte sadu SDK. Pokud funkce používáte přímo z rozhraní REST API, zobrazí se chyba HTTP 403 (Zakázáno).

Pokud chcete používat funkce související s telemetrií, nejprve se ujistěte na webu Azure Portal, že používáte úroveň služby Standard.