Araç çağırma uygulaması Uber, sizi gizlice takip mi ediyor? Aslında hayır ancak iOS’un konum bildirimleri özelliği öyle hissettirebilir.
Havaalanına indiğinizde telefonunuzda şu bildirimle karşılanabilirsiniz:
“[Bulunduğunuz yere] hoş geldiniz – Uber alma noktasına yol tarifi almak için uygulamayı açın.”
Yalnızca uygulama kullanılırken konumlarına erişim izni veren gizlilik bilincine sahip kullanıcılar için bu durum rahatsız edici olabilir. Uygulamanın yalnızca kullanım sırasında konumunuza erişmesine izin verdiyseniz Uber konumunuzu nasıl bilebilir?

Bu mesajı birkaç kez gördükten sonra, sonunda Uber’in izinlerini kontrol ettim ve hem kişisel hem de iş telefonumda “uygulama kullanılırken” olarak ayarlandığından emin oldum. Ve gerçekten de Uber’in konum erişimi tam olarak istenildiği gibi “uygulama kullanılırken” olarak ayarlanmıştı.
Yine de her iki cihaz da iniş yaptığımda aynı bildirimi gösteriyordu ve bu iznin iki cihazda da yanlış ayarlanmış olması pek olası görünmüyordu. (Bu arada, bunun dışında başka seçeneklerinin olması da şaşırtıcı. Neden herhangi bir araç hizmeti veya yemek uygulaması, bunları aktif olarak kullanmadığınızda konumunuzu bilmek zorunda olsun ki – ticari nedenlerle sizi takip etmek dışında?)

Bazılarının gizlilik ihlali olarak görebileceği tek diğer neden, bir uygulamanın siz onu kullanmadığınızda bile çalışmasına ve içeriğini güncellemesine izin veren “Arka Plan Uygulama Yenileme” adlı bir özellik olabilir. Öte yandan, bu, konum erişimini yalnızca uygulama kullanılırken sınırlama ilkesine aykırı olur ve herhangi bir uygulamanın, özellikle iOS’ta, böylesine temel bir gizlilik kontrolünü atlamasına izin verilmesi olası görünmüyor.
Uber nereye indiğinizi nasıl biliyor?
Cevap, Apple’ın geliştiricilere sağladığı “UNLocationNotificationTrigger” adlı bir özellikte yatıyor. Bu özellik, cihaz belirli bir coğrafi bölgeye (örneğin bir havaalanı) girdiğinde veya çıktığında, uygulamanın önceden yapılandırılmış bir bildirim göndermesini sağlar. Uygulama sahibi bazı coğrafi bölgeleri önceden tanımlar ve Apple’dan bu bölgelere giriş yapan kullanıcıları kendisine bildirmesini talep eder. Bu şekilde, “uygulama kullanılırken” ayarının ardındaki niyeti etkili bir şekilde atlatır
Yani, yukarıdaki soruyu doğrudan cevaplamak gerekirse: Hayır, Uber veya diğer uygulamalar bölgeye giriş yaptığınızda konumunuzdan sizi takip etmiyor. Önceden tanımlanmış havaalanının coğrafi sınırları içine girdiğinizi algılıyor.
Öte yandan, bildirimin ifadesi yanıltıcıdır: Uber’in sizi aktif olarak takip ettiği ve rehberlik sunduğu izlenimini verir. Gerçekte, yalnızca bildirime dokunup uygulamayı açtığınızda cihazınız konumunuzu uygulama ile paylaşır.
Elbette coğrafi sınırlamanın meşru nedenleri vardır. Örneğin, bir aile güvenliği uygulaması, çocuğun cihazı okul veya ev gibi belirlenen güvenli bir bölgeye girdiğinde veya çıktığında ebeveynleri bilgilendirebilir. Ya da başka bir örnek vermek gerekirse bir akıllı ev uygulaması, evden çıkarken ışıkları kapatmanızı hatırlatabilir.
Ancak aynı mekanizmayı sadece reklam olarak görülebilecek bir amaç için kullanmak, bize göre aşırı bir uygulamadır. Bu örnekte Uber, havaalanının sınırları içine girer girmez hizmetlerinin reklamını yapıyor. Bir ana caddede yürürken her perakendecinin uygulaması sizi içeri girmeniz için uyarırsa ve konum bildirimleri ile kendi uygulamaları dışında da konumunuzu görebilirse ne olur?
Apple’ın konum tetiklemeli bildirimlerle ilgili kuralları sıkılaştırması ve bunları reklam amaçlı olmayan kullanımlarla sınırlaması mantıklı görünüyor. Bu, bildirimlerin kullanıcıya hizmet eden işlevlerle sınırlı kalmasını ve para kazanma amacıyla kullanılmamasını sağlayacaktır.
UNLocationNotificationTrigger nedir?
İlgilenenler için daha detaylı açıklayalım; UNLocationNotificationTrigger, iOS’te konum bildirimleri tetiklemek için kullanılan bir sınıftır. Yani uygulamanız, kullanıcı belirli bir coğrafi konuma girdiğinde veya çıktığında bildirim göstermek istiyorsa bu tetikleyiciyi kullanır. Apple’ın UserNotifications framework’ünün bir parçasıdır.
Çalışma mantığı
- Core Location kullanarak bir bölge (CLCircularRegion) tanımlarsınız.
Örneğin, kullanıcının bir mağazaya veya ofise 100 metre yaklaştığında tetiklenecek bir bölge.
- UNLocationNotificationTrigger bu bölgeye bağlanır.
- Kullanıcı bölgeye girdiğinde veya çıktığında sistem bildirimi tetikler.
Örnek kod
import UserNotifications
import CoreLocation
// 1. Bölge tanımlama
let center = CLLocationCoordinate2D(latitude: 41.0082, longitude: 28.9784)
let region = CLCircularRegion(center: center, radius: 100, identifier: "IstanbulCenter")
region.notifyOnEntry = true
region.notifyOnExit = false
// 2. Bildirim içeriği
let content = UNMutableNotificationContent()
content.title = "Hoş geldiniz!"
content.body = "İstanbul merkezine ulaştınız."
content.sound = .default
// 3. Tetikleyici
let trigger = UNLocationNotificationTrigger(region: region, repeats: false)
// 4. İstek oluşturma
let request = UNNotificationRequest(identifier: "locationAlert", content: content, trigger: trigger)
// 5. Bildirimi planlama
UNUserNotificationCenter.current().add(request)
Uber ve diğer uygulama izinleri ve dikkat edilecekler
- Kullanıcıdan hem bildirim izni (UNUserNotificationCenter) hem de konum izni (CLLocationManager) almak gerekir.
- Arka planda çalışabilmesi için “Location Updates” yetkisi gerekebilir.
- Simülatörde test etmek zordur; genellikle gerçek cihazda test yapılır.