Yakınlık (Proximity) ve Windows Phone 8

Proximity, birbirine yakin cihazlar arasinda bağlantı desteği sağlayan, Windows Runtime'da yer alan, sınıflar dizisidir. Uygulamanız bu API'leri kullanarak destekleyen cihazlar arasında temassız bağlantı kurabilir. Windows Phone 8'de bu tür bağlantı çeşitleri arasında yer alan Yakın Alan İletişim - Near Field Communication (NFC) (Uluslararası kısa mesafe bağlantı standardı) desteğide bulunmaktadır. Daha fazla bilgi için bu yazının sonunda yer alan örnek projenin kaynak kodlarını indirip inceleyebilirsiniz.

Kullanım Senaryolar

  • Cihazları arası bağlantı: Bir cihazdaki uygulamanız ile başka bir cihazdaki uygulamanız arasında WIFI-Bluetooth üzerinden bağlantı kurulum işlemini kolaylaştırmak.
  • İçerik alımı: NFC etiketlerde yer alan dijital içeriği Proximity aracılığı ile telefonunuza aktarmak.
  • Dijital nesnelerin değişimi: Örneğin elektronik kartvizit, etiket bilgilerinin aktarımı.
Sınıf (Class) Açıklama
PeerFinder  Uygulamanızın başka bir cihazdaki eşini bulmanızı ve aralarında soket bağlantısı kurmanızı sağlar.
ProximityDevice  3-4 cm yakınlıktaki cihazlar arasında küçük ölçekli veri alışverişini sağlar.
PeerInformation  Eş uygulamayı tanımlayan bilgi içeriği.
ProximityMessage  Üye olunan kaynaktan alınan mesajı içerir.
ConnectionRequestedEventArgs  Bir uygulamaya gönderilen iletişim talebi özelliklerini içerir.
TriggeredConnectionStateChangedEventArgs  Bir uygulamaya gönderilen bağlantıdaki değişiklik bilgilerini içerir.

 

Windows Phone 8 uygulamalarınızda Proximity özelliklerini kullanabilmek için uygulama projenizin WMAppManifest.xml dosyasında aşağıda belirtilen yeteneklerin kullanılmakta olduğu belirtilmeli.

  • ID_CAP_NETWORKING 

  • ID_CAP_PROXIMITY

bu yeteneklerin kullanıldığının belirtilmemesi durumunda uygulamanız doğru çalışmayabilir, Windows Store'a yaptığınız uygulama gönderiniz kabul edilmeyebilir.

 

NFC mesaj gönderimi / alımı

Aşağıda yer alan örnek kod, NFC özelliği olan ve etkin hale getirilmiş iki cihaz arasında mesaj alışverişini göstermektedir. Bu işlem için ProximityDevice sınıfı kullanılmaktadır.

Mesaj Gönderimi (C#)

using Windows.Networking.Proximity;using System.Diagnostics;

ProximityDevice device = ProximityDevice.GetDefault();// Cihazın NFC desteği varmı?if (device!= null){  long Id = device.PublishMessage("Protokol.MesajTip", "Merhaba Windows Phone 8!");  Debug.WriteLine("Mesaj yayında. ID'si: {0}", Id);  // Yayınlanan mesaja özgü, tekil ID'yi daha sonra mesaj yayınını kesmek üzere sakla...}

 Yukarıda yer alan örnekte PublishMessage metodu ile mesajinizi yayinlayabilirsiniz. Bu metodun aldığı parametrelerden ikiside string veri tipindedir. İlk parametre mesajınızı tekil kılmak için belirteceğiniz protokol ve mesaj alt tipinden oluşmaktadır ve aralarında nokta bulunur. Alt mesaj tip için istediğiniz herhangi bir metin girebilirsiniz. Bu mesajı göndermek istediğiniz cihazdaki uygulamanın, belirttiğiniz protokol ve alt tipte mesaja üye olup dinliyor olması gerekir. Etiket yazımı, uygulamalar arasi iletişim gibi senaryolarda kullanacağınız alt mesaj tip, senaryoya göre önceden tanımlı anahtar kelime havuzunda yer alan ifadelerden birisi olmak durumunda. Bu örnekte yer alan string tipinde bir metin bilgisi yayınlayabilmek için protokol alanına Windows yazılması gerekiyor. İkinci parametre ise string tipinde göndermek istediğiniz bilgiyi içermektedir.

Mesaj Alımı (C#)

Önceki örnek kod ile gönderdiğimiz mesajın, başka bir cihazdan alınabilmesi için:

 ProximityDevice device = ProximityDevice.GetDefault();// Cihazın NFC desteği varmı?if (device!= null){  long Id = device.SubscribeForMessage ("Protokol.MesajTip", MesajGeldiCallback);  Debug.WriteLine("Gelebilecek mesaja üye olundu. ID'si {0}", Id);  // Tekil üyelik ID sini, daha sonra üyeliği durdurabilmek için sakla.}private void MesajGeldiCallback(ProximityDevice sender, ProximityMessage message){    Debug.WriteLine("{0} nolu cihazdan alınan mesaj: {1}'", sender.DeviceId, message.DataAsString);}

 Yukarıdaki örnekte yer alan SubscribeForMessage metodu ile belirli bir protokol ve alt mesaj tipindeki mesaj yayınına üye olunur. Beklenen tipte mesaj geldiği takdirde MesajGeldiCallback adındaki metod sistem tarafından çağırılır ve gelen mesaj bu metoda parametre olarak geçer. Örnekte gelen mesaj uygulama geliştirme platformunun hata ayıklama penceresine yazdırılmaktadır.

Proximity API lerinin, kapsamli NFC özelliklerini görmek için Windows Phone Store'da yer alan uygulamamı indirip test edebilir kaynak kodlarına erişebilirsiniz.

Storeda yer alan örnek uygulamanın:

Adı: NFC Comm

Adresi: https://www.windowsphone.com/tr-tr/store/app/nfc-comm/da3aadaf-3822-4402-acc9-aa873acba25c

Kaynak Kod: https://aka.ms/nfc

 

Kaynak kodunu paylaştığım örnek projeyi çalıştırabilmek için gerekenler: