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:
|
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:
- Visual Studio 2012
- Windows Phone 8 SDK
- Windows Phone Toolkit: https://phone.codeplex.com/