Azure ve Windows Phone push Notifications

Tüm takipçilerime ve ilk kez bu yazımı okuyacak olanlara merhabalar, bu yazımda Microsoft Azure ve Windows Phone 8 için push notificationlarının nasıl oluşturulacağından bahsetmek istiyorum.

Minimum gerekenler,

  • Windows Phone 8 SDK,
  • Windows Azure Hesabı

Windows Azure hesabı olmayanlar ve ilk kez denemek isteyenler ücretsiz 90 günlük deneme sürümüne http://www.windowsazure.com/en-us/ adresinden üye olabilirler.

Azure Mobil Servisleri

Öncelikle Azure yönetim portalından yeni bir mobil servis oluşturarak işlemimize başlıyoruz.

1

Yukarıdaki ekran görüntüsünde de görüldüğü üzere Compute>Mobile Service>Create dememiz bu işlem için yeterli olacaktır.

2

Karşımıza gelen bu yeni Create a Mobile Service ekranındaki formu doldurmamız gerekiyor, URL kısmı mobil servisiniz için bir web adresi olacaktır yani ekran görüntüsüne bakıldığına pushdeneme.azure-mobile.net bizim web adresimiz. Push servisleri kullanabilmemiz için birde veritabanına ihtiyacımız olacağından Create a new SQL database instance diyoruz. Region kısmında ise veritabanımızın hangi datacenter’da tutulmasını istediğimizi belirtmemiz gerekiyor.

3

Bu kısımda veritabanımızı oluşturmamız gerekiyor, Eğer daha önceden azure kullandıysanız ve bir veritabanınız mevcut ise bunu seçerek devam edebilirsiniz yada eğer yeniyseniz yeni bir veritabanı oluşturarak bu işlemleri tamamlayabilirsiniz.

Yukarıdaki işlemleri tamamladıktan sonra, uygulamamızın kullanacağı mobil servisini ve veritabanını oluşturduk. Şimdi sıra uygulamamızı oluşturmaya geldi.

4

Bundan sonrasında azure’un örnek olması açısından kullanıcılarına sunmuş olduğu hazır örneği kullanarak devam edeceğim, mobil servisi oluşturduktan sonra karşınıza yukarıdaki gibi bir ekran gelecektir. Eğer herhangi bir dashboard’la karşılaşacak olursanızda üst menüdeki dashboard seçeneğinin hemen yanında bulunan bulut ikonuna tıklamanız yeterlidir. Yukarıdaki ekrandan create a new windows phone app diyerek uygulamamıza devam edebiliriz.

5

Bu ekranda ise azure’un bize sadece bu örnek için sunmuş olduğu sihirbazı kullanarak Create TodoItem Table ile veritabanımızda uygulamamız için bir bir tablo oluşturacağız. Yazıyı uzatmak istemediğim için detaylı olarak azure veritabanından bahsetmek istemiyorum. Bu yüzden mümkün olduğunca kolay şekilde uygulamamızı yapacağız. Tablomuzu’da oluşturduktan sonra Download diyerek uygulamamızın hazır C#/Xaml kodunu indirip Visual Studio ile açabiliriz.

Şu an daha fazla devam etmeden önce burada bahsetmek istediğim bir önemli nokta var, uygulamamız azure ile nasıl iletişim kuracak. Solution explorer’dan App.xaml.cs kodunu açtığınızda farkederseniz böyle bir kod göreceksiniz.

public static PhoneApplicationFrame RootFrame { get; private set; }

        public static MobileServiceClient MobileService = new MobileServiceClient(
            "mobile-servis url'i",
            "app-key"
            );

bu kod bloğunda uygulamamıza ait url’i ve app-key’i belirtmemiz gerekiyor. Appkey’inizi diğer uygulamalarınızda öğrenmek istersenizde Get Started ekranından CONNECT AN EXISTING WINDOWS PHONE 8 APP dedeğinizde karşınıza gelen ekrandan görüntüleyebilirsiniz.
6Artık uygulamamıza ait push notificationlarımızı oluşturabiliriz.

App.xaml.cs dosyasında global olacak şekilde aşağıdaki objeyi yaratın

public static HttpNotificationChannel CurrentChannel { get; private set; }

Daha sonrasında ise Push notificationlarımız için bir channel oluşturmamız gerekiyor. Bunun içinde aşağıdaki methodu tanımlamanız yeterli olacaktır.

private void KanalOlustur()
{
    CurrentChannel = HttpNotificationChannel.Find("MyPushChannel");

if (CurrentChannel == null)
{
    CurrentChannel = new HttpNotificationChannel("MyPushChannel");
    CurrentChannel.Open();
    CurrentChannel.BindToShellTile();
}

}

Yukarıdaki kodun son satırında BindToShellTile’ı görmüşsünüz. Bu uygulamamızın shellTile notificationlarını kullanacağını belirtmektedir. Eğer bir toast kullanmak istiyorsanızda bu kısmı aşağıdaki gibi değiştirebilirsiniz.

CurrentChannel.BindToShellToast();

Şimdi ise sırada uygulamamız açıldığında bu methodu tetikleyecek olan kod bloğunu yazmak olucak. App.xaml.cs dosyasında Application_LaunchingEvent handler’ını bularak oluşturmuş oluduğunuz KanalOlustur methodunu çağırmanız yeterlidir. Bu işlemlerden sonra Application_Launching event handlerı aşağıdaki gibi görünecektir.

private void Application_Launching(object sender, LaunchingEventArgs e)
        {
            AcquirePushChannel();
        }

Kodumuzda son olarak yapmamız gereken ise herhangi bir push notification göndermek istediğimizde göndermek istemiş olduğumuz notification kanalınıda belirtmemiz gerekmektedir. MainPage.xaml.cs dosyasını açtığınızda sınıfın en başındaki entity sınıfını görmüş olmanız gerekmektedir. Bu sınıfa aşağıdaki özelliği eklediğinizde artık azure servisimize veri gönderirken push kanalımızda göndermiş olacağız.

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

Artık son olarakta uygulamamızdan notificationlarımızı gönderme kodumuzuda ekleyip bu kısmı tamamlayabiliriz. Buton1_click eventine geldiğinizde bir InsertTodoItem satırının olduğu gözünüze çarpacaktır. Bu satırda listemize eklemiş olduğumuz elemanlar mobil servisimize ait veritabanında tutulmaktadır. burada bizim yapmamız gereken değişiklik aşağıdadır. Basitçe yapılacak öğemizi azure servisimize gönderirken yanında push kanalımızıda göndermekteyiz.

private void ButtonSave_Click(object sender, RoutedEventArgs e)
        {
            var todoItem = new TodoItem { Text = TodoInput.Text, Channel=App.CurrentChannel.ChannelUri.ToString() };
            InsertTodoItem(todoItem);
        }

Şimdilik uygulamamızın kaynak koduyla işimiz bitti, artık azure veritabanımızı push notification göndermesi için ayarlayabiliriz. Bunun için üstte yer alan menüden önce Data’yı daha sonrasında ise tablonuzu seçiniz.

7

Karşınıza gelen ekran size tablonuzda herhangi bir veri olmadığını söylemektedir, henüz data göndermedik. Yine üstteki menüden Script’i seçerek, veritabanımıza herhangi bir veri girildiğine yapılacak olan işlemi belirtmemiz gerekiyor. Amacınız sadece veriler üzerinde ekleme,silme, okuma veya güncelleme yapmak ise burada herhangi bir değişiklik yapmanıza gerek yoktur. Biz bir push notification göndereceğimiz için insert fonksiyonunda aşağıdaki değişikliği yapmamız gerekiyor.

function insert(item, user, request) {
    request.execute({
        success: function () {
            // Write to the response and then send the notification in the background
            request.respond();
            push.mpns.sendFlipTile(item.channel, {
                title: item.text
            }, {
                success: function (pushResponse) {
                    console.log("Sent push:", pushResponse);
                }
            });
        }
    });
}

Uygulamınızda tile notification yerine toast göstermek istiyorsanızda yukarıdaki javascript kodunun yerine aşağıdakini kullanabilirsiniz.

function insert(item, user, request) {
request.execute({
        success: function(){
            request.respond();
            push.mpns.sendToast(item.channel,{text1:'You have new message',
            text2:item.message,param:'/SendMessage.xaml?receiver='+item.sender},{
                success:function(pushResponse){

                      console.log("Sent push:",pushResponse)
            }
    });
        }
    });
}

Evet, sonunda uygulamamızı ancak tek bir eksiğimiz kaldı, oda tabiki de uygulamamıza push notificationlarını kullanacağını belirten izinleri ayarlamak. Visual Studio Solution Explorer’dan Properties -> WMAppManifest.xml dosyasını açarak arayüzden Capabilities’i seçiniz.

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Şimdi F5’e basarak uygulamanızı kontrol edebilirsiniz. Ancak uygulamadan bir push notification göndermeden önce Tile eklemeyi unutmayın. Bu konuyla ilgili herhangi bir sorusu olanlar yazının altındaki yorum kısmını kullanabilirler.

Bir sonraki yazımda görüşmek üzere.

Not: Uygulamadaki kodların bazı kısımları, http://www.windowsazure.com’dan alınmıştır.

Reklamlar

Demola Network Tanıtımı ve Windows Phone Eğitimi – İzmir

Blog’umu takip edenlerden uzun bir süredir yeni yazı yayınlıyamadığım için öncelikle özür dilerim. Şu sıralar vizelerdi, projelerdi, etkinliklerdi derken fazla bir vaktim olmadı.

Bu yazımda teknik konulardan bahsetmekten ziyade İzmir Üniversitesi ve Dokuz Eylül Üniversitesi ile birlikte ortaklaşa düzenlenen bir etkinlikten bahsetmek istiyorum. Geçtiğimiz 10 Nisan günün İzmir Üniversite’sinde Demola Network’ün sunmuş olduğu bir etkinlik gerçekleşti. Hemen arkasından da 11-12 Nisan günlerinde yine Demola’nın katkısıyla Windows Phone 8 eğitimi Dokuz Eylül Üniversitesi’nde yapıldı. Peki biraz Demola’dan bahsetmek gerekirse, nedir bu demola?

Demola Network, Demola 2008 yılında Finlandi’yanın Tampere kentinde kurulmuş olan bir firmadır. Amaçları üniversiteler ile endüstriyi ortak projelerde çalışmaları için birleştirmektir. Kendilerine üye olan olan şirketler arasında Nokia’da bulunmaktadır. Demola’nın kurmuş olduğu sistem endüstriden gelen bir projeyi öğrencilere sunarak ilgili proje ile ilgili olarak öğrencilerin çözüm bulmalarını sağlamaktadır. Bu sayede şirketler kaynak ayıramadıkları projeleri çöpe atmaktansa Demola’nın sunmuş olduğu büyük bir öğrenci kütlesi sayesinde bu projeleri gerçekleştirebilmektedirler. Öğrencilere katkıları ise, bilindiği gibi üniversitelerin en büyük problemi teorik eğitimlerin iş yaşamına fazla uymuyor olması. Ancak Demola’nın sunmuş olduğu bu sistem sayesinde öğrenciler gerçek hayattaki projelerde çalışarak deneyim kazanmakta ve mezun olduklarında sadece teorik bilgileriyle değil, aynı zamanda iş yaşamında da kazanmış oldukları deneyimlerle mezun olmaktadırlar.

Demola’nın 10 Nisan gününde gerçekleştirmiş olduğu sunuma katılım oldukça güzeldi katılımcılar arasında Netsis, Ege-Binom, Vestel, Giltaş gibi Ege Bölgesindeki büyük firmalarda yer almaktaydı. Demola’dan gelen Ville Kairamo ve Harri Pennanen’ın sunumlarının arkasından firmalar kendi aralarında böyle bir sistem Ege Bölgesinde ve Türkiye’de nasıl yararlı olabilir, problemleri nelerdir şeklinde birde bir workshop gerçekleştirdiler.

10-11 Nisan günlerinde ise sabırsızlıkla beklemiş olduğum Windows Phone Eğitimi Dr. Michael Samarin, Futurice Ltd tarafından gerçekleştirildi.

20130411_094656

Eğitimin ilk gününde Nokia Developer Consultancy’nin uygulama geliştiricilere ne gibi özellikler sunduğunu ve windows phone 7 ile windows phone 8 arasındaki farklardan bahsedildi. Nokia gerçekten de uygulama geliştiriciler için oldukça güzel özellikler sunmakta ki bunlardan birisi Uzaktan Cihaz erişimi. Bu sistem sayesinde Nokia Developer Consultancy üyeleri uygulamalarını gerçek cihazlar üzerinde uzaktan erişim ile test edebilme imkanlarına sahip oluyorlar. Peki nasıl Nokia Developer Consultancy üyeliği alınabileceğine gelince Nokia 99$ karşılığında 1 yıllık üyeliği uygulama geliştiricilere sunmakta. Windows Phone 8 ile ilgili olarak Live Tile’lar, Push Notification’lar, People Hub gibi özelliklerden bahsedildi.

Eğitimin ikinci gününde ise artık uygulamaları emulatör üzerinde değilde gerçek cihazlar üzerinde denemeye başladık. Bu günde Windows Phone 8 ‘in camera, NFC, bluetooth, AppToApp Communication gibi API’ları tanıtıldı.

Yazımda aslında eğitimin tamamını anlatmak isterdim fakat 2 günlük bu süreç oldukça yorucu ve güzel geçti, tamamını burada yazmam pekte mümkün değil. Ancak İzmir’de böyle bir etkinliğin gerçekleşmiş olması oldukça güzel bir çalışmaydı.

Bu konuda İzmir Üniversitesi ve Dokuz Eylül Üniversitesine teşekkürlerimi sunarım. Başka bir yazıda görüşmek üzere

Demola Network ile ilgili daha detaylı bilgi almak isteyenler

http://demola.fi/ bu adresten yararlanabilir.