Wysyłanie powiadomień międzyplatformowych za pomocą usługi Azure Notification Hubs

Ten samouczek opiera się na poprzednim samouczku Wysyłanie powiadomień do konkretnych użytkowników przy użyciu usługi Azure Notification Hubs. W tym samouczku opisano sposób wypychania powiadomień do wszystkich urządzeń zarejestrowanych dla określonego uwierzytelnionego użytkownika. Takie podejście wymagało wielu żądań wysłania powiadomienia do każdej obsługiwanej platformy klienta. Usługa Azure Notification Hubs obsługuje szablony, za pomocą których można określić, w jaki sposób określone urządzenie chce otrzymywać powiadomienia. Ta metoda upraszcza wysyłanie powiadomień międzyplatformowych.

W tym artykule pokazano, jak korzystać z szablonów w celu wysyłania powiadomienia przeznaczonego dla wszystkich platform. W tym artykule użyto pojedynczego żądania do wysłania powiadomienia neutralnego platformy. Aby uzyskać bardziej szczegółowe informacje na temat szablonów, zobacz Notification Hubs overview (Omówienie usługi Notification Hubs).

Ważne

Windows Phone projekty 8.1 i starsze nie są obsługiwane w programie Visual Studio 2019. Aby uzyskać więcej informacji, zobacz Obsługiwane platformy i zgodność programu Visual Studio 2019.

Uwaga

W usłudze Notification Hubs urządzenie może zarejestrować wiele szablonów przy użyciu tego samego tagu. W takim przypadku przychodzący komunikat, który jest przeznaczony dla tagu, powoduje dostarczenie wielu powiadomień do urządzenia — po jednym dla każdego szablonu. Ten proces umożliwia wyświetlanie tego samego komunikatu w wielu powiadomieniach wizualnych, takich jak znaczek i powiadomienie wyskakujące w aplikacji Ze Sklepu Windows.

Wysyłanie powiadomień międzyplatformowych przy użyciu szablonów

Uwaga

Usługa powiadomień wypychanych firmy Microsoft (MPNS) jest przestarzała i nie jest już obsługiwana.

W tej sekcji użyto przykładowego kodu utworzonego w samouczku Wysyłanie powiadomień do określonych użytkowników przy użyciu usługi Azure Notification Hubs . Kompletny przykład możesz pobrać z usługi GitHub.

Aby wysyłać międzyplatformowe powiadomienia przy użyciu szablonów, wykonaj następujące czynności:

  1. W programie Visual Studio w Eksplorator rozwiązań rozwiń folder Controllers, a następnie otwórz plik RegisterController.cs.

  2. Znajdź blok kodu w metodzie Put , który tworzy nową rejestrację, a następnie zastąp switch zawartość następującym kodem:

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

    Ten kod wywołuje metodę specyficzną dla platformy, aby utworzyć rejestrację szablonu zamiast rejestracji natywnej. Ponieważ rejestracje szablonów pochodzą z rejestracji natywnych, nie trzeba modyfikować istniejących rejestracji.

  3. W Eksplorator rozwiązań w folderze Controllers otwórz plik NotificationsController.cs. Zastąp metodę Post poniższym kodem:

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

    Ten kod wysyła powiadomienie do wszystkich platform jednocześnie. Nie określasz natywnego ładunku. Usługa Notification Hubs kompiluje i dostarcza prawidłowy ładunek do każdego urządzenia z podaną wartością tagu, jak określono w zarejestrowanych szablonach.

  4. Ponowne publikowanie projektu internetowego interfejsu API.

  5. Uruchom ponownie aplikację kliencka, aby sprawdzić, czy rejestracja zakończyła się pomyślnie.

  6. Opcjonalnie wdróż aplikację kliencką na drugim urządzeniu, a następnie uruchom aplikację. Na każdym urządzeniu zostanie wyświetlone powiadomienie.

Następne kroki

Po ukończeniu tego samouczka dowiedz się więcej o usłudze Notification Hubs i szablonach w następujących artykułach: