iOS 14 Nearby Interaction Entegrasyonu


Görsel Referansı


Nearby Interaction (NI); WWDC 2020'de tanıtılan, yalnızca U1 çipli cihazlarda (iPhone 11 ve sonrası) iOS 14 ile birlikte gelen, uygulamalarımızda mesafe ve yön özelliklerini etkin bir şekilde kullanarak diğer cihazlar ile etkileşime geçmemizi sağlayan bir API'dir. Bu mobimizde bu özelliği uygulamamıza ekleme adımlarından ve bize getirdiği yeniliklerden bahsedeceğiz.


U1 çipinin yüksek gücünü kullanarak konumunu paylaşan cihazlar, bulundukları ortam içinde eş zamanlı konumlandırmanın getirmiş olduğu kullanıcı deneyimini yaşarlar. İlk olarak iOS 13 AirDrop ile karşımıza çıkan bu özelliği AR, oyun ya da eş zamanlı konum paylaşımlarını kullanan uygulamalarda da görebiliriz. Fikir vermesi adına örnek videoya buradan ulaşabilirsiniz.


Bu API ile ihtiyacınıza göre

  • Cihazlar arası mesafe veya

  • Cihazların birbirine göre yön durumları hakkında bilgi alabiliyoruz.


Görsel Referansı


Öncelikle kullanıcıların bu API'yi kullanabilmesi için en az iki cihaza ihtiyacı olacak. Cihazlar birbirine izin verdikten sonra oluşturulan güvenli oturum boyunca anlık olarak yukarıda bahsettiğim mesafe ve yön bilgilerine ulaşabilirler.


Görsel Referansı


Uygulama tek bir oturum ile sınırlı değil. Bir cihazın aynı anda birden fazla cihazla etkileşime girmesine izin vererek yeni oturumlar başlatılabilir durumda olacak.


Görsel Referansı


NOT: Geliştirme adımları için U1 çipi olan iki cihaz veya multi iOS Simulator desteği olan bir simülatore ihtiyacımız olacak. Çoklu iOS Simulator desteği ile ilgili buradan destek alabilirsiniz.



GELİŞTİRME


O zaman projemize başlayabiliriz. Bu özelliği kullanabilmemiz için NearbyInteraction framework'ünü projemize ekliyoruz.

import NearbyInteraction

İlk olarak uygulama, cihaz ile bağlantı kurmak için bir NISession oluşturur. NISession, iki cihaz arasındaki etkileşimi tanımladığından, aynı anda bağlantı kurulan her cihaz için ayrı bir NISession oluşturulması gerekir. Oluşturulan session nesnesi ile oturuma özgü, cihazı tanımlayan bir discoveryToken değeri oluşturulur. Cihazlar birbirine izin verdikten sonra eğer aynı cihaz ile önceden bir paylaşım olmadıysa bu değeri network katmanı (MultipeerConnectivity) aracılığıyla diğer cihazlarla paylaşır.


İzin işleminin gerçekleşmesi için uygulamanın Info.plist dosyasına NSNearbyInteractionAllowOnceUsageDescription değerini ve karşısına kullanıcıyı bilgilendiren, açıklayıcı bir metin eklememiz gerekmektedir.


Token paylaşımından sonra NI eşlendiği cihazın göreceli konumunu sürekli olarak almasını sağlayan bilgi alışverişini yönetmeye başlar.


NOT: MultipeerConnectivity (MPC), yakın mesafedeki cihazlar arasında internet bağlantısı gerektirmeden cihazınızın Bluetooth veya Wi-Fi gibi bir ağ donanımını kullanarak veri aktarımı yapmasını sağlar. Bu katmanla ilgili ayrıntılı bilgiye buradan ulaşabilirsiniz.




NISessionDelegate


Uygulama, yakındaki cihazlar eşleştiğinde ve cihazlar ile ilgili her bilgi aldığında NISession delegate fonksiyonları tetiklenir. Bu fonksiyonlardan session( _session: NISession, didUpdate: ); distance ve direction bilgilerini içeren NINearbyObject dizisi döner ve ön yüz değişiklikleri bu fonksiyon kullanılarak yönetilir. Oluşturulan oturumda cihaz bulunamadığında ya da oturum geçersiz olduğunda session( _session: NISession, didRemove: ) fonksiyonu ile bilgi verilir. Diğer 3 delegate fonksiyonu ise uygulamanın state'i ile ilgili bilgi almamızı sağlar. Uygulama arka plana atıldığında session( _session: NISession, sessionWasSuspended: ) fonskiyonu, oturum askıya alındığında ise session( _session: NISession, sessionWasSuspensionEnded: ) fonksiyonu tetiklenir. Böylece uygulamanız belirli bir oturumdan mesafe ve yön güncellemeleri almayı durdurur. Bu fonksiyonda oturum kullanılmaya devam edildiğinde otomatik olarak yeniden başlamadığı için ilk başladığında kullandığınız yapılandırmanın aynısı ile run() öğesini bir kez daha çağırmanız gerekir. Son olarak ise oturum geçersiz kılındığında session( _session: NISession, didInvalidateWith: ) fonksiyonu tetiklenir ve yeni oturumu burada yeniden başlatmanız gerekir.



Nearby Object


Delegate fonksiyonlarından elde ettiğimiz NINearbyObject nesnesi, cihazın mesafe ve yön bilgisini almamızı sağlar. Mesafe (Float), metre olarak cihazlar arası uzaklık bilgisini verirken; yön ise (simd_float3) cihaza göre 3D değer dönmektedir.


Akışın genel olarak canlanması için aşağıdaki görseli inceleyebilirsiniz. Nearby Interaction'ların kullanımı ile ilgili daha detaylı bilgi için Apple'in kendi dökümanını incelemenizi tavsiye ederim. Dökümana buradan ulaşabilirsiniz.




Sonuç


Siz de kendinize özel tasarımları örnek demo üzerinden oluşturup inceleyebilirsiniz. Hoşça kalın! ⛄️🎄


GitHub: https://github.com/tugcedulge/NearbyInteractions


Kaynaklar:

https://developer.apple.com/documentation/nearbyinteraction

https://developer.apple.com/videos/play/wwdc2020/10668/#:~:text=The%20Nearby%20Interaction%20framework%20streams,of%20two%20or%20more%20devices.

https://medium.com/@rafellk/deploy-to-multiple-ios-simulators-with-one-single-build-a3292d204f48

https://medium.com/flawless-app-stories/nearby-interaction-ios-14-wwdc20-e4ad9bcb3826

https://www.wwdcnotes.com/notes/wwdc20/10668/


#ios #ios14 #iphone #apple #nearbyinteraction

0 yorum

Son Paylaşımlar

Hepsini Gör

Komünite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_düzenlendi_düzenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
imageedit_2_9667998092.png
JetBrains Hakkında Detaylı Bilgi Alın

© 2021 by mobiler.dev

Kurumsal Yazar Hesapları

adesso.png
mobilerdevLogo.jpg
Yazarlık Başvurusu Hakkında Bilgi Alın, Başvuru Yapın.
Topluluk Yazarlarını Tanıyın