Azure Notification Hubs ile platformlar arası bildirimler gönderme

Bu öğretici, Azure Notification Hubs kullanarak belirli kullanıcılara bildirim gönderme öğreticisini temel alır. Bu öğreticide, kimliği doğrulanmış belirli bir kullanıcıya kayıtlı tüm cihazlara anında iletme bildirimleri gönderme açıklanmaktadır. Bu yaklaşım, desteklenen her istemci platformuna bildirim göndermek için birden çok istek gerektiriyor. Azure Notification Hubs, belirli bir cihazın nasıl bildirim almak istediğini belirtebileceğiniz şablonları destekler. Bu yöntem, platformlar arası bildirim göndermeyi basitleştirir.

Bu makalede, tüm platformları hedefleyen bir bildirim göndermek için şablonlardan nasıl yararlanılacağını gösterir. Bu makalede platformdan bağımsız bildirim göndermek için tek bir istek kullanılır. Şablonlar hakkında daha ayrıntılı bilgi için bkz . Notification Hubs'a genel bakış.

Önemli

Windows Phone 8.1 ve önceki projeler Visual Studio 2019'da desteklenmez. Daha fazla bilgi için bkz. Visual Studio 2019 platformu hedefleme ve uyumluluk.

Not

Notification Hubs ile bir cihaz aynı etiketi kullanarak birden çok şablon kaydedebilir. Bu durumda, etiketi hedefleyen bir gelen ileti, cihaza her şablon için bir tane olmak üzere birden çok bildirim gönderilmesine neden olur. Bu işlem, windows mağazası uygulamasında hem rozet hem de bildirim bildirimi gibi birden çok görsel bildirimde aynı iletiyi görüntülemenizi sağlar.

Şablonları kullanarak platformlar arası bildirimler gönderme

Not

Microsoft Anında İletilen Bildirim Hizmeti (MPNS) kullanım dışı bırakıldı ve artık desteklenmiyor.

Bu bölümde , Azure Notification Hubs kullanarak belirli kullanıcılara bildirim gönderme öğreticisinde oluşturduğunuz örnek kod kullanılır. Örneğin tamamını GitHub'dan indirebilirsiniz.

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

  1. Çözüm Gezgini'daki Visual Studio'da Denetleyiciler klasörünü genişletin ve RegisterController.cs dosyasını açın.

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

    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ır. Şablon kayıtları yerel kayıtlardan türetildiği için var olan kayıtları değiştirmeniz gerekmez.

  3. Çözüm Gezgini,Controllers 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 belirtemezsiniz. Notification Hubs, kayıtlı şablonlarda belirtildiği gibi sağlanan etiket değeriyle her cihaza doğru yükü derler ve teslim eder.

  4. Web API projenizi yeniden yayımlayın.

  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 tamamladığınıza göre Notification Hubs ve şablonlar hakkında daha fazla bilgi için şu makalelere bakın: