Odesílání oznámení pro různé platformy pomocí Azure Notification Hubs

Tento kurz vychází z předchozího kurzu Odesílání oznámení konkrétním uživatelům pomocí Služby Notification Hubs. Tento kurz popisuje, jak odesílat nabízená oznámení všem zařízením, která jsou zaregistrovaná u konkrétního ověřeného uživatele. Tento přístup vyžadoval několik požadavků na odeslání oznámení na každou podporovanou klientskou platformu. Azure Notification Hubs podporuje šablony, pomocí kterých můžete určit, jak chce konkrétní zařízení přijímat oznámení. Tato metoda zjednodušuje odesílání oznámení pro různé platformy.

Tento článek ukazuje, jak využít šablony k odeslání oznámení, které cílí na všechny platformy. Tento článek používá jeden požadavek k odeslání oznámení neutrálního na platformě. Podrobnější informace o šablonách najdete v tématu Přehled služby Notification Hubs.

Důležité

Windows Phone projekty 8.1 a starší se v sadě Visual Studio 2019 nepodporují. Další informace najdete v tématu Cílení na platformy a kompatibilita platforem sady Visual Studio 2019.

Poznámka

S Notification Hubs může zařízení zaregistrovat více šablon pomocí stejné značky. V tomto případě příchozí zpráva, která cílí na značku, způsobí, že se do zařízení doručí několik oznámení, jedno pro každou šablonu. Tento proces umožňuje zobrazit stejnou zprávu v několika vizuálních oznámeních, například jako oznámení nebo informační zprávu v aplikaci pro Windows Store.

Odesílání oznámení pro různé platformy pomocí šablon

Poznámka

Služba MPNS (Microsoft Push Notification Service) je zastaralá a už se nepodporuje.

V této části se používá vzorový kód, který jste vytvořili v kurzu Odesílání oznámení konkrétním uživatelům pomocí služby Azure Notification Hubs . Kompletní ukázku si můžete stáhnout z GitHubu.

Pokud chcete odesílat oznámení pro různé platformy pomocí šablon, postupujte takto:

  1. V sadě Visual Studio v Průzkumník řešení rozbalte složku Controllers a otevřete soubor RegisterController.cs.

  2. Vyhledejte blok kódu v Put metodě, která vytvoří novou registraci, a pak nahraďte switch obsah následujícím kódem:

    switch (deviceUpdate.Platform)
    {
        case "mpns":
            var toastTemplate = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<wp:Notification xmlns:wp=\"WPNotification\">" +
                    "<wp:Toast>" +
                        "<wp:Text1>$(message)</wp:Text1>" +
                    "</wp:Toast> " +
                "</wp:Notification>";
            registration = new MpnsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate);
            break;
        case "wns":
            toastTemplate = @"<toast><visual><binding template=""ToastText01""><text id=""1"">$(message)</text></binding></visual></toast>";
            registration = new WindowsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate);
            break;
        case "apns":
            var alertTemplate = "{\"aps\":{\"alert\":\"$(message)\"}}";
            registration = new AppleTemplateRegistrationDescription(deviceUpdate.Handle, alertTemplate);
            break;
        case "fcm":
            var messageTemplate = "{\"data\":{\"message\":\"$(message)\"}}";
            registration = new FcmTemplateRegistrationDescription(deviceUpdate.Handle, messageTemplate);
            break;
        default:
            throw new HttpResponseException(HttpStatusCode.BadRequest);
    }
    

    Tento kód volá metodu specifickou pro platformu, která místo nativní registrace vytvoří registraci šablony. Vzhledem k tomu, že se registrace šablon odvozují od nativních registrací, nemusíte upravovat existující registrace.

  3. V Průzkumník řešení otevřete ve složce Controllers soubor NotificationsController.cs. Nahraďte metodu Post následujícím kódem:

    public async Task<HttpResponseMessage> Post()
    {
        var user = HttpContext.Current.User.Identity.Name;
        var userTag = "username:" + user;
    
        var notification = new Dictionary<string, string> { { "message", "Hello, " + user } };
        await Notifications.Instance.Hub.SendTemplateNotificationAsync(notification, userTag);
    
        return Request.CreateResponse(HttpStatusCode.OK);
    }
    

    Tento kód odešle oznámení na všechny platformy najednou. Nezadáte nativní datovou část. Notification Hubs sestaví a doručí do každého zařízení správnou datovou část se zadanou hodnotou značky, jak je uvedeno v registrovaných šablonách.

  4. Znovu publikujte projekt webového rozhraní API.

  5. Spusťte klientskou aplikaci znovu a ověřte, že registrace proběhla úspěšně.

  6. Volitelně můžete nasadit klientskou aplikaci do druhého zařízení a pak aplikaci spustit. Na každém zařízení se zobrazí oznámení.

Další kroky

Teď, když jste dokončili tento kurz, najdete další informace o notification Hubs a šablonách v těchto článcích: