Azure Notification Hubs ile platformlar arası bildirimler gönderme

Bu öğretici, Azure Notification Hubs [kullanarak belirli kullanıcılara bildirim gönderme öğreticisinde Notification Hubs.] Bu öğreticide, belirli bir kimliği doğrulanmış kullanıcıya kayıtlı tüm cihazlara nasıl anında bildirim bildirimlerinin nasıl bildirilmesi açıklanır. Bu yaklaşım, desteklenen her istemci platformuna bildirim göndermek için birden çok istek gerektirmektedir. Azure Notification Hubs, belirli bir cihazın nasıl bildirim almak istediğini belirtebilirsiniz şablonları destekler. Bu yöntem, platformlar arası bildirim göndermeyi kolaylaştırır.

Bu makalede, tüm platformları hedef alan bir bildirim göndermek için şablonlardan nasıl yararlan yararlanılabilir? Bu makalede, platformdan bağımsız bildirim göndermek için tek bir istek lanmıştır. Şablonlar hakkında daha ayrıntılı bilgi için bkz. Notification Hubs genel bakış.

Önemli

Windows Phone 8.1 ve önceki sürümleri 2019'da Visual Studio desteklenmiyor. Daha fazla bilgi için bkz. Visual Studio 2019 platform hedefleme ve uyumluluğu.

Not

Bu Notification Hubs, bir cihaz aynı etiketi kullanarak birden çok şablon kaydedebilirsiniz. Bu durumda, etiketi hedef alan bir gelen ileti, cihaza her şablon için bir tane olmak için birden çok bildirim teslim edilir. Bu işlem, aynı iletiyi hem rozet hem de bir Windows Store uygulamasında bildirim olarak birden çok görsel bildirimde görüntülemeye olanak sağlar.

Şablonları kullanarak platformlar arası bildirimler gönderme

Not

Microsoft Anında Bildirim Hizmeti (MPNS) kullanım dışıdır ve artık desteklenmiyor.

Bu bölümde, Azure Notification Hubs öğreticisinde azure kullanarak belirli kullanıcılara [bildirim gönderme öğreticisinde Notification Hubs] kullanır. Örneği tam olarak indirmek için GitHub.

Şablonları kullanarak platformlar arası bildirimler göndermek için şunları yapın:

  1. içinde Visual Studio'Çözüm Gezgini, Denetleyiciler klasörünü genişletin ve ardından RegisterController.cs dosyasını açın.

  2. Yönteminde yeni bir kayıt oluşturan kod bloğuna bulun ve Put ardından içeriği aşağıdaki switch kodla değiştirin:

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

    Bu kod, yerel kayıt yerine şablon kaydı oluşturmak için platforma özgü yöntemi çağrılır. Şablon kayıtları yerel kayıtlardan türetilir, mevcut kayıtları değiştirmenize gerek yok.

  3. Bu Çözüm Gezgini, Denetleyiciler klasöründe NotificationsController.cs dosyasını açın. Post yöntemini aşağıdaki kod ile değiştirin:

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

    Bu kod tüm platformlara aynı anda bir bildirim gönderir. Yerel yük belirtmezseniz. Notification Hubs, kayıtlı şablonlarda belirtilen şekilde, sağlanan etiket değerine sahip her cihaza doğru yükü oluşturur ve iletir.

  4. Web API projenizi yeniden yayımla.

  5. Kaydın başarılı olduğunu doğrulamak için istemci uygulamasını yeniden çalıştırın.

  6. İsteğe bağlı olarak, istemci uygulamasını ikinci bir cihaza dağıtın ve ardından uygulamayı çalıştırın. Her cihazda bir bildirim görüntülenir.

Sonraki adımlar

Bu öğreticiyi tamamlamış olduğunuza göre, şu makalelerde Notification Hubs ve şablonlar hakkında daha fazla bilgi edinebilirsiniz: