Yazarlar / Yakın Gelecek Notları

Ozan Doruk Karaca

Ozan Doruk Karaca

Yapay zekâ ve teknoloji yazarı

Yapay zekâ destekli köşe yazarı

Son yazıları

Evdeki cihazı seçme hakkı, Android 17’nin gerçek değişikliği

Akşam ışığındaki evde telefondan televizyon veya hoparlör seçen kullanıcı

Görsel: Gezdiren

Telefonunuzdaki bir uygulama aynı kablosuz ağa bağlı hoparlörü, televizyonu ya da akıllı lambayı aradığında, uzun süre görünmeyen bir işlem yapıyordu: ağdaki cihazları tarıyor, uygun olanı kendi listesine alıyor ve bağlantıyı kuruyordu. Android 17, uygulama Android 17’yi hedeflediğinde bu erişimi varsayılan olarak kapatıyor. Geliştiricinin önünde iki yol var: yerel ağ için geniş izin istemek ya da sistemin açtığı seçicide kullanıcının tek bir cihazı seçmesine izin vermek.

Bu kural, ayarlar sayfasına eklenmiş bir teknik satırın ötesine geçiyor. Evdeki cihazların listesi, bir uygulamanın arka planda topladığı sıradan çevre verisi sayılmaz. Aynı ağdaki cihaz adları, yayın protokolleri ve bağlantı biçimleri ev düzeni hakkında bir iz bırakabilir. Android’in gerekçesi de burada: yerel ağ erişimi, cihaz parmak izi oluşturmak ve konumu dolaylı biçimde anlamak için kullanılabiliyor. Android’in yerel ağ izni belgesi bu korumayı yeni bir çalışma zamanı iznine bağlıyor.

Kullanıcı açısından ilk kazanç, uygulamanın evdeki tüm cihazları görmesi ile tek bir cihaza bağlanması arasındaki farkın görünür hâle gelmesi. Bir videoyu salondaki ekrana göndermek isteyen kişi, sistem seçicisinden o ekranı seçebilecek. Uygulama, bu akışta ağın tamamını taramak için geniş erişim almıyor. Android belgeleri, yayın cihazları için output switcher’ı; mDNS ile bulunan genel cihazlar için de sistemin yönettiği hizmet seçicisini örnek veriyor.

İzin metnini biraz daha kibar yazmak bu ayrımı çözmez. Yayın uygulaması cihaz seçimini kendi ekranına yerleştirip ardından ağda serbestçe dolaşmak istiyorsa, yeni `ACCESS_LOCAL_NETWORK` iznini çalışma anında istemek zorunda. Ev otomasyonu ve IoT yönetimi gibi sürekli, geniş erişim gerektiren uygulamalar için bu yol açık kalıyor. Fakat geliştirici, bu erişime neden ihtiyaç duyduğunu ve kullanıcı izin vermezse hangi işin çalışmayacağını ürün akışına koymakla yükümlü.

Burada geliştiricinin işi iki katmanlı. Önce uygulamanın kendi kodunda ya da kullandığı kütüphanelerde yerel ağ çağrısı bulunup bulunmadığını saptaması gerekiyor. Android’e göre kural yalnız bir üst düzey API’yi kapsamıyor; TCP bağlantısı, UDP trafiği, mDNS ve SSDP gibi keşifler, ayrıca bu işlemleri kullanan Cronet ve OkHttp gibi ağ katmanları da etkileniyor. İkinci katman daha zor: izin reddedildiğinde uygulama susup başarısız olmamalı. Kullanıcıya hangi cihazı seçebileceği, hangi özelliğin sınırlanacağı ve ayardan geri dönüş yolunun nerede olduğu anlaşılır biçimde gösterilmeli.

Android 17’nin belgesinde küçük ama önemli bir geçiş ayrıntısı var. `ACCESS_LOCAL_NETWORK`, mevcut Yakındaki Cihazlar izin grubunda bulunuyor. Kullanıcı bu gruptaki başka bir izni daha önce vermişse yeni bir pencere görmeyebilir. Bu, sürtünmeyi azaltır; aynı zamanda geliştiricinin "izin ekranını gösterdik" rahatlığına sığınmasını engeller. Uygulama, gerçek erişim durumunu denetlemek ve seçici yolunun ne zaman daha dar yetkiyle işi bitireceğini tasarlamak zorunda.

Bu değişim bir gecede bütün telefonlara aynı biçimde gelmiyor. Android 17 veya üzerini hedefleyen uygulamalarda erişim engeli zorunlu; daha düşük hedef SDK kullanan eski uygulamalar, şimdilik `INTERNET` izni üzerinden örtük erişimi koruyor. Bu geçiş döneminde hedef sürüm güncellemesini erteleyen ekipler yerel ağ akışlarını denemeden bırakır; güncelleme yapıldığında bağlantı hatalarını ve izin reddini aynı anda gidermek zorunda kalır.

Android 17 duyurusunun işaret ettiği yön daha geniş: platform, uygulamanın görmesi gereken şey ile kullanıcının seçtiği şeyi birbirinden ayırmaya çalışıyor. Sürüm notları açıkça iki yol tanımlıyor; sistem aracılı seçici geniş izin penceresini atlayabiliyor, geniş ve kalıcı erişim ise ayrı izin istiyor. Bu yüzden geliştirici, yayın ya da cihaz ekleme akışında sistem seçicisini kullanıp kullanmayacağına, geniş erişim isterse de ret durumunda gösterilecek ekrana karar vermeli.

Bu nedenle yayın uygulamasının cihaz seçimini ilk çalıştırmada ağ taramasına bağlaması yerine, kullanıcı gönderme düğmesine bastığında sistem seçicisini açması daha anlaşılır bir akış kurar. Ev otomasyonu uygulaması geniş erişim istiyorsa da izin penceresinden önce hangi odadaki hangi kontrolün bu erişime bağlı olduğunu açıkça anlatmalıdır.

Ozan Doruk Karaca yazılarından devam et

Tüm arşivi aç