Mobile Services JS Backend - Push Notification

Bu yazıda Azure Mobile Services Push özelliğinden bahsedeceğim. Mobile Services üzerinden bir kaç satırlık JS kodu ile Windows Phone, Windows, IOS, Android cihazlara push notification göndermeniz mümkün. Visual Studio ile gelen özellikler sayesinde bu özelliğin Windows veya Windows Phone projelerine eklemek oldukça kolay, Universal App geliştiriyorsanız bu özelliği iki proje içinde implement etmeniz gerekecek.

Bu işlemi yapabilmemiz için bir Windows Store Dev Center üyelğine ve bir Azure Mobile Services'a ihtiyacımız var.

Ben örnek proje olarak Windows Store App yapacağım. Yeni bir Windows Store App yaratıyoruz ve solution explorer'da proje üzerine sağ tuş ile tıklayarak Add -> Push Notification'a tıklıyoruz. Karşınıza çıkan pencerede Next'e tıklıyoruz ve bizden Microsoft Account istiyor. Bu account sizin Windows Store Dev Center account'unuz olmalı. Daha sonra uygulamanızın Store ile eşleştirilmesi gerekiyor. Daha sonra azure mobile services ile eşleştirmeniz için Visual Studio size yardımcı olacak. Daha sonra finish butonu ile açılan pencereyi tamamlıyoruz ve projeye bizim için bir kaç satır kod ekliyor.

Projemize eklenen kodlara bakalım,

   

Solution Explorer

   

Gördüğünüz gibi push.register.cs adında bir dosya eklendi. İçeriğine baktığımızda MobileServices client nesnesi üzerinden Register olduğunu göreceğiz. Aslında mantık olarak şu şekilde çalışmakta, uygulamanız kapalı bile olsa push notification gelebilmeli ve her uygulamanın push notificationi için ayrı ayrı listener olmaması için bu push notification alma işi işletim sistemi düzeyinde handle ediliyor. Uygulama işletim sisteminden bir channel request ediyor, ve işletim sistemi bizim uygulamamız için bir channel yaratıyor, bu channel'in uri'sini mobile service'e gönderiyoruz ve daha sonra push notification atmak istediğimizde, istek Windows Notification Service'lare gönderiliyor ve bu service'ler bizim cihazımıza notification'i push ediyor. OS requesti alıyor ve notificationi gösteriyor. Aralara girip müdahale etmemizde mümkün olsada genel yapı bu şekilde çalışıyor. Aşağıdaki diagram konuyu özetliyor.

   

Push Notification Diagram

   

Kodları inceleyim,

Yukarıdaki kodlarda gördüğünüz gibi ilk önce CreatePushNotificationChannelForApplicationAsync methodu ile channel yaratılıyor ve RegisterNativeAsync(channel.Uri); methodu ile yaratılmış channel'in uri'si azure mobile service'e gönderiliyor. Daha sonrada test amaçlı olarak InvokeApiAsync methodu ile bir custom api (notifyAllUsers) çağrılıyor. Bu UploadChannel methodu App.xaml.cs içerisinden uygulama açılırken çağırılıyor ve uygulama açılırken kendisini azure mobile service'a push notification için register etmesi sağlaniyor. Haliyle uygulama açılır açılmaz notification geliyor. Çünkü notifyAllUsers cağırılıyor, bu cağrıyı iptal edip sadece register edebilirsiniz.

   

Şimdi gidelim ve bu custom api ne işe yarıyor bunu inceleyelim. Azure Management Portal'dan veya Visual Studio Solution Explorer'dan ilgili Mobile Services altında notifyAllUsers.js kodlarına ulaşabilirsiniz. Aşağıdaki kodların içerisinde açıklamaları bulabilirsiniz.

Uygulamayı çalıştırdığınız push notification geldiğini göreceksiniz.

   

Push Notification

Örneğin sizde Mobile Services Scheduler ile her 15 dk'da bir haber sitelerini kontrol edip, son dakika gelişmesi var ise kullanıcılarınıza push notification atabilirsiniz.

Kaynak kodları buradan indirebilirsiniz.

Windows 10 Uygulaması Geliştirmek Artık Mümkün

Microsoft çok kısa bir zaman önce Visual Studio Tools for Windows 10 Technical Preview'i duyurdu ve bununla beraber Windows 10 SDK kullanmak mümkün oldu ancak bunun ilk preview olduğunu belirtmemde fayda var. Bu toollari kullanabilmeniz için Windows Insider programına dahil olmanız gerekli, Windows 10 Technical Preview ve Visual Studio 2015 CTP6 ile artık kolaylıkla Windows 10 uygulamaları geliştirebilirsiniz. Bu araçları buradan indirebilirsiniz.

Universal(evrensel) olarak geliştirdiğimiz uygulamalar farklı tip cihazlarda çalışabiliyor yani bir kez uygulamayı yazıyorsunuz ve tam olarak aynı kod(en kötü senaryoda yazdığınız kodun %98'i) PC, Laptop, Phone, tablet, Xbox, Surface Hub, ilerde Raspberry Pi ve hatta Hololens gibi Windows 10 çalıştıran tüm cihazlarda çalışabiliyor. Bu, Visual Studio içinde Windows 10 App olarak karşımıza çıkıyor. Bu bakış açısıyla, kodumuzu bir kez yazarak olabildiğince fazla platforma ve cihaza ulaşacağız.

Hangi Programlama Dili

Windows 10 uygulama geliştirmek için C#, VB, JavaScript, C++ dillerinden birini kullanabilirsiniz, tüm bu programlama dilleri için Visual Studio 2015 CTP6 içinde template'ler mevcut.

Extension SDK

Cihaza özel kod yazmak istediğimizde karışıklığı azaltmak adına karşımıza Extension SDK'ler çıkıyor örneğin siz mobile cihazlara özel bir kod yazacaksınız bunun için Windows Mobile Extension SDK'i referans olarak projesine eklemeniz gerekecek.

Diğer Yenilikler

Windows 10 ile beraber yazdığınız tüm .Net uygulamlar Windows Store tarafından native .net olarak compile edilecek ve bu şekilde kullanıcılara ulaşacak bunun sayesinde uygulamalar daha hızlı çalışır hale gelece ve tabiki daha az kaynak tüketebilecek.

Bunların yanında muhteşem debug tool'lari karşımıza çıkıyor. Bunlardan biri XAML UI debug aracı, çalışan uygulamanın visual tree'sini görmeniz çok kolaylıkla XAML içerisinde debug yapmanız mümkün. Diğer bir yeni özellik ise Diagnostic araci, bu arac ile uygulamanız çalışırken ne kadar ram ve cpu kullandığını görmek mümkün.

Ayrıca bu uygulamalar .NET Framework 4.6 üzerinde çalıştığı için .NET Framework 4.6 ile gelen özelliklerde mevcut. Detaylı bilgi: http://blogs.msdn.com/b/dotnet/archive/2014/11/12/announcing-net-2015-preview-a-new-era-for-net.aspx#_.NET_Framework_4.6  


Bence en kısa zamanda Windows 10 Technical Preview başta olmak üzere tüm aracları indirip bu platformu deneyin. Windows 8 ile başlayan bu dönüşüm bence Windows 10 ile beraber çok büyük bir ivme kazancak. Özellikle tek kod ile bu kadar çok cihaza erişebilmek benim ilgimi çekiyor. Windows 10'a geçişin ücretsiz olacağı senaryoların çok fazla olduğunu düşünürsek, bence Windows 10 biz yazılım geliştiriciler için çok büyük bir öneme sahip olacak.

En kısa zamanda Windows 10 uygulamaları geliştirme hakkında bir yazı serisine başlayacağım.