Mobile Services / Push Notification

Push Notification

Mobil uygulama geliştiriciler için en önemli konulardan birisi olan Push Notification konusunda Windows Azure tarafında güzel bir hizmet sağlanıyor. Mobile Services hizmeti ile uygulamalarınız üzerinde kullanıcılarınıza istediğiniz kısıtlamalar ile Push notification iletebiliyorsunuz. Bunun için uygulama içerisinde Channel uri tanımlayarak uygulamadaki push notification alanını belirleyerek ilerleyebiliyoruz. Yani hangi işlem sırasında nereden push edileceği belirleniyor. Client Service üzerine gönderilecek request ile servis Microsoft Azure içerisinde bulunan Push Notification Service hizmetine bağlanıyor ve yolladığınız channel uri’si ile birlikte uygulamaya geri gönderiyor.

Bu konuyla ilgili demoyu bir önceki Windows Azure Mobile Service Score Board örneği üzerinden gerçekleştiriyor olacağım.

Uygulamayı kısaca özetlemek gerekirse kullanıcılar random sayılar üzerinde en yüksek olan rakamın kazandığı bir yapıya sahip. En yüksek rakamı ve kullanıcı adı bilgilerini azure mobile service içerisindeki database üzerine kaydediyor. Push Notification sistemini kullanarak kullanıcıların birbirleri arasında yeni bir score kaydı gerçekleştiğinde push notification uyarısı ile bilgilendirilmesini sağlıyor olacağız.

İlk olarak appdev.microsoft.com adresinden Windows Store app submit işlemi için gerekli olan App Name Reserve işlemini ve push notification ayarlamalarını yapıyorum.

1

Resimde görüldüğü gibi App Name kısmında yer alan uygulama için isim rezervasyonunu gerçekleştiriyorum.2

Uygulama ismini gerçekleştirdikten sonra Visual Studio tarafına geçerek projemi windows store hesabım içerisinde rezerve ettiğim uygulama adıyla eşleştiriyorum.

3

Store tarafına live ID’niz ile bağlandıktan sonra hesabınıza ait uygulama listesini görebilirsiniz ve hangi isme rezerve ettiyseniz onu seçerek uygulamanızı appdev tarafında eşleştirebilirsiniz.

4

listeden gerekli proje adını seçtikten sonra Associate butonu ile eşleştirme işlemini tamamladıktan sonra tekrar appdev arayüzüne geliyorum ve push notification ayarlamaları için Dashboard sekmesi altında sol tarafta listelenen menü içerisinde yer alan services kısmına tıklıyorum. Services içerisinde aşağıdaki resimde kırmızı ile çizdiğim Live Services Site sekmesi ile uygulama içi bilgilerine ulaşmak için otantikasyon sayfasına yönlenebileceğim bir arayüze ulaşıyorum.

5

Live services içerisine girdikten sonra aşağıdaki göründüğü gibi Authenticating your service ile uygulamanın bana sunduğu SID ve Client Secret yapılarına ulaşıyorum.

6

SID ve Client Secret bilgileri azure ve proje tarafındaki iletişimi sağlamak için gerekli olacaktır.

7

Yukarıdaki görünen konfigrasyon alanlarını azure management portal üzerinde oluşturduğumuz mobile service alanına girerek Push sekmesi altında yer alan alanlara yerleştiriyoruz ve save ediyoruz.

8

Projemiz içerisinde Push notification işlemi için yukarıda da bahsettiğim gibi bir Channel oluşturmamız gerekmektedir. Bunun için App.xaml.cs içerisine

using Windows.Networking.PushNotifications; ekliyoruz.

Push Notification Client sınıfından türeyecek olan bir Channel tanımlıyoruz ve bunu içeren metodu OnLaunched içerisinde çağırıyoruz. Proje çalıştırıldığı anda kanal ile bağlantıyı gerçekleştiriyor olacak ve herhangi bir operasyonel işlem gerçekleştirildiği anda push olarak client service tarafına bildirilecek böylece diğer kullanıcılarada notification olarak bildirilecek.

public static PushNotificationChannel CurrentChannel { get; private set; }

        private async void AcquirePushChannel()
        {
            CurrentChannel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
        }

Yukarıda oluşturduğum AcquirePushChannel() metodunu App.xaml.cs içerisinde yer alan OnLaunched metodu içerisinde çağırmayı unutmuyoruz.

Daha sonra örnek içerisinde oluşturduğumuz ScoreBoard.cs sınıfı içerisindeki attribute’ler içersine yeni bir DataMember olarak Channel ekleyerek başlıyorum.

    [DataContract]
    public class ScoreTable
    {
        [DataMember(Name = "id")]
        public int Id { get; set; }

        [DataMember(Name = "name")]
        public string Name { get; set; }

        [DataMember(Name = "score")]
        public int Score { get; set; }

        [DataMember(Name = "winner")]
        public string Winner { get; set; }

        [DataMember(Name = "date")]
        public DateTime Date { get; set; }

        [DataMember(Name = "channel")]
        public string Channel { get; set; }
    }

Channel tarafınıda ekledikten sonra mobile service içerisindeki database üzerine skor kaydı yaptığım save score altında push channel kolonunada kayıt alanını Channel=App.CurrentChannel.Uri olarak ekliyorum.

private void btn_SaveScore_Click(object sender, RoutedEventArgs e)
        {
            if (number1 >= number2)
            {
                WinnerScore = number1;
            }
            else
            { WinnerScore = number2; }

            var scoreResult = new ScoreTable { Name = UserName.Text, Winner = txt_Winner.Text,
                                               Score = WinnerScore, Date = DateTime.Now,
                                               Channel=App.CurrentChannel.Uri
                                             };
            InsertTodoItem(scoreResult);
        }

Sırada Azure Push Notification Client Service tarafına insert işlemi yapıldığında notification gönder kısmını tanımlayacağımız Script yazmamız gerekmekte.

9Ekranda gözükecek olan push notification içeriğini ve kısıtlamalarını tanımladığımız script içerisinde görüldüğü gibi “Yeni Skor” + kullanıcı adı + Skoru + “Eklendi” diye tanımlıyoruz. Bu işlem başarılı olduğunda push işlemini azure içerisinde log’luyoruz.

Artık işlemler tamamlandı son olarak küçük bir ayrıntı olarak Push notification gözükebilmesi için Proje içerisinde Badge Logo içerisindeki Toast Capable alanını Yes olarak değiştirmemiz gerekiyor.

Capture

Tüm ayarlamaları tamamladıktan sonra artık uygulamayı çalıştırabiliriz save işlemini tamamladıktan sonra Push Notification aşağıdaki gibi ekranda gözükecektir.

Untitled

Artık mobil uygulamamız içerisinde Push notification tamamlandı appdev.microsoft.com adresinden uygulamayı markete gönderdikten sonra her kullanıcıya notifikasyon gönderebilirsiniz. Herkese kolay gelsin 🙂


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s