Odesílání oznámení pro různé platformy pomocí Služby 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 Azure Notification Hubs. Tento kurz popisuje, jak odesílat nabízená oznámení všem zařízením, která jsou zaregistrovaná pro 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í napříč platformami.

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í platformy. 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ší nejsou v sadě Visual Studio 2019 podporované. 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í registrovat 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čí více 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 odznak i jako informační zprávu v aplikaci pro Windows Store.

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

Poznámka

Microsoft služba nabízených oznámení (MPNS) je zastaralá a už se nepodporuje.

V této části se používá ukázkový 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 pak 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í, není nutné stávající registrace upravovat.

  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í všem platformám 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 na druhé 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: