Erişim İzinleri ve Gizlilik — mobil geliştirmenin en önemli ve hızla değişen alanlarından biridir. Apple Developer Guidelines (2025)'a göre, 2021'de ATT'nin (App Tracking Transparency) uygulanmasından bu yana, kullanıcıların izleme için onay oranı yaklaşık %20'dir. iOS ve Android'deki izin modellerini, gizlilik gereksinimlerini (ATT, Privacy Manifest, GDPR) ve bunların uygulanmasına yönelik pratik ipuçlarını inceleyelim.
Önemli Noktalar
İzin Modelleri iOS ve Android'de ortak bir fikri paylaşır: kullanıcı hassas verilere (kamera, mikrofon, konum, kişiler) erişime izin vermelidir. Ancak uygulama önemli ölçüde farklılık gösterir. Android izinleri kullanım anında (runtime) ister, iOS Info.plist'te amacın tanımlanmasını gerektirir ve ilk erişimde ister. Mobil uygulamada erişim izinlerinin doğru uygulanması güvenlik ve güvenin temelidir.
Android 6.0'dan (API 23) önce, tüm izinler kurulum sırasında istenirdi — kullanıcı ya hepsini kabul eder ya da uygulamayı yüklemezdi. Android 6.0 ile Runtime Permissions geldi: uygulama ilk ihtiyaç anında izin ister ve kullanıcı reddedebilir. iOS, iOS 8.0'dan beri benzer bir yaklaşım kullanır. Mobil geliştirmede erişim izinlerinin evrimini anlamak, sezgisel bir UX tasarlamaya yardımcı olur.
IT Sectr'da «minimum izinler» ilkesini izliyoruz: yalnızca gerçekten gerekli olanı ve yalnızca gerektiğinde istiyoruz. Bu, kullanıcı güvenini artırır: Google'a (2025) göre, ilk başlatmada 5'ten fazla izin isteyen uygulamaların kayıt dönüşüm oranı %30 daha düşüktür. Mobil uygulamalardaki bu erişim izni modeli, uygulamamızla doğrulanmıştır.
| Parametre | iOS | Android |
|---|---|---|
| Mekanizma | Kaynağa ilk erişimde istek | İlk erişimde istek (Runtime Permission) |
| Amaç açıklaması | Info.plist (Privacy — Usage Description) | shouldShowRequestPermissionRationale (isteğe bağlı) |
| İzin iptali | Ayarlar → Gizlilik | Ayarlar → Uygulamalar → İzinler |
| Gruplama | Hayır (her izin ayrı ayrı) | Permission Groups (ör. STORAGE) |
| Reklam kimliği | IDFA (ATT gerekli) | GAID / AAID (Google Play Services) |
| Gizlilik | Privacy Manifest (2024'ten itibaren) | Data Safety Section (Google Play) |
Tablo 4. iOS ve Android izin modellerinin karşılaştırılması. Temel fark: iOS, Info.plist'te her iznin kullanım amacının açık metin açıklamasını gerektirir. Android, kullanıcıya iznin neden gerekli olduğunu açıklamak için shouldShowRequestPermissionRationale sunar. Platformlar arasındaki erişim hakları farklılıklarını anlamak, doğru modeli seçmeye yardımcı olur.
Normal Permissions — kullanıcının gizliliği için tehdit oluşturmayan izinler. Kurulum sırasında otomatik olarak verilir: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, BLUETOOTH. Geliştiricinin bunları kodda istemesi gerekmez. Bu erişim izni sınıflandırması, gizlilik risk seviyesine karşılık gelir.
Dangerous Permissions — kişisel verilere erişim gerektiren izinler: CAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION, READ_CONTACTS, READ_CALENDAR, READ_EXTERNAL_STORAGE. Runtime isteği gerektirir. Permission Group — ilgili izinlerin grubu: kullanıcı CAMERA'ya izin verdiyse, video kaydetme izni (RECORD_AUDIO? hayır, bu ayrı bir gruptur) — hayır, CAMERA ve RECORD_AUDIO farklı gruplardadır.
Runtime Permission — Android'de ActivityCompat.requestPermissions() çağırmak veya iOS'ta CLLocationManager.requestWhenInUseAuthorization() aracılığıyla istemek. Kullanıcı şu şekilde yanıt verebilir: Grant (izin ver), Deny (reddet) veya «Bir daha sorma» (Android'de iki reddetmeden sonra). Mobil uygulamada erişim izinlerini yapılandırmak, kullanıcı davranışını dikkate almayı gerektirir.
Runtime Permission Android'de her kullanımdan önce mevcut durumun kontrol edilmesini gerektirir. shouldShowRequestPermissionRationale() yöntemi, kullanıcı daha önce reddettiyse true döndürür — bu, açıklama içeren bir iletişim kutusu gösterme sinyalidir. iOS'ta eşdeğeri durum kontrolüdür: .notDetermined, .denied, .authorized, .restricted. Mobil uygulama gizliliği, izin durumunun sürekli izlenmesini gerektirir.
// Kotlin — kamera için runtime izin isteği
class CameraActivity : AppCompatActivity() {
companion object {
private const val CAMERA_PERMISSION_CODE = 100
}
private fun requestCameraPermission() {
when {
ContextCompat.checkSelfPermission(
this, Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED -> {
openCamera()
}
shouldShowRequestPermissionRationale(Manifest.permission.CAMERA) -> {
showRationaleDialog("QR kodlarını taramak için kamera erişimi gerekli")
}
else -> {
requestPermissions(
arrayOf(Manifest.permission.CAMERA),
CAMERA_PERMISSION_CODE
)
}
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
if (requestCode == CAMERA_PERMISSION_CODE &&
grantResults.firstOrNull() == PackageManager.PERMISSION_GRANTED
) {
openCamera()
}
}
}
Bu kod doğru modeli gösterir: durumu kontrol et → açıklama göster (gerekirse) → izin iste → sonucu işle. shouldShowRequestPermissionRationale önemli bir yöntemdir: kullanıcı daha önce reddettiyse, iznin neden gerekli olduğunu açıklayan bir iletişim kutusu gösterin. Bu olmadan, kullanıcı erişimi kalıcı olarak reddedebilir.
ATT (App Tracking Transparency) — izleme için kullanıcının açık onayını gerektiren bir Apple framework'üdür (iOS 14.5+). Onay olmadan IDFA (Reklamverenler için Tanımlayıcı) sıfır döndürür. Flurry'e (2025) göre, ATT kabul oranı bölgeye ve uygulama türüne bağlı olarak %15–25'tir. Mobil uygulamada erişim izinlerinin yönetimi, doğru framework'ü seçmekle başlar.
Privacy Manifest — geliştiricinin uygulamanın hangi veri türlerini ve hangi amaçlarla topladığını beyan ettiği zorunlu bir dosyadır (2024'ten itibaren yeni uygulamalar için, 2025'ten itibaren güncellemeler için). Apple, inceleme sırasında Privacy Manifest'in uygulamanın gerçek davranışıyla uyumluluğunu kontrol eder. Mobil uygulamada gizlilik belgelenmelidir.
ATT, Info.plist anahtarı NSUserTrackingUsageDescription'ın izlemenin neden gerekli olduğuna dair bir açıklamayla eklenmesini ve ATTrackingManager.requestTrackingAuthorization() çağrılmasını gerektirir. Önemli: GDPR onayı göstermeden önce ATT istenmeli mi? Hayır, ATT ayrı bir Apple isteğidir. AB'de önce GDPR banner'ını, ardından ATT'yi gösterin. iOS'ta mobil uygulamada erişim izinleri, zorunlu ATT yapılandırması gerektirir.
IDFA, reklam ilişkilendirmesi ve kişiselleştirme için kullanılır. Android'de eşdeğeri GAID (Google Advertising ID) veya AAID'dir (Amazon Advertising ID). Android 13+'tan itibaren, GAID'ye erişmek için bir runtime izni (com.google.android.gms.permission.AD_ID) vardır. Mobil uygulama gizliliği, reklam tanımlayıcıları üzerinde kontrol gerektirir.
GDPR (Genel Veri Koruma Yönetmeliği) — Mayıs 2018'den beri yürürlükte olan AB yönetmeliği. Gerektirir: kişisel veri toplama için açık onay, erişim izinlerini yönetme hakkı, verileri silme hakkı (unutulma hakkı), veri ihlali bildirimleri ve büyük şirketler için DPO (Veri Koruma Görevlisi) atanması. Yönetmelik ayrıca mobil uygulamalarda şeffaf bir erişim izni modeli tanımlar.
Mobil uygulamalar için GDPR şu anlama gelir: ilk başlatmada onay banner'ı gösterme (hangi verilerin hangi amaçlarla toplandığına dair net bir açıklama ile), zorunlu olmayan izinleri reddetme imkanı ve ayarlarda «Hesabı Sil» düğmesi. Popüler GDPR araçları: OneTrust, Google'ın Onay Yönetimi Platformu (CMP), Usercentrics. Mobil uygulamada gizliliği sağlamak, CMP entegrasyonu gerektirir.
IT Sectr'da GDPR onayını kullanıcıya ilk tanıtım aşamasında uyguluyoruz: kullanıcı net bir açıklama görür, hangi verilerin toplanmasına izin vereceğini seçer ve ayarlardan seçimini değiştirebilir. Bu sadece yasal bir gereklilik değil, aynı zamanda bir güven faktörüdür: şeffaf uygulamaların kullanıcı tutma oranı %20 daha yüksektir (IT Sectr verileri, 2024). Mobil uygulama gizliliği ve erişim izni yönetimi, kullanıcı tutmanın temel faktörleridir.
Onay şu niteliklerde olmalıdır: gönüllü (hayır hayırdır), belirli («her şey için» onay toplanamaz), bilgilendirilmiş (kullanıcı neye onay verdiğini bilir) ve açık (aktif bir eylem gerekir — onay kutusu, düğme). Önceden işaretlenmiş onay kutuları GDPR tarafından yasaktır. İhlal cezaları — küresel cironun %4'ü veya 20 milyon Euro'ya kadar. Mobil uygulamada erişim izinlerinin doğru yapılandırılması cezalardan kaçınmaya yardımcı olur.
IT Sectr deneyimine dayanarak — izinler ve gizlilikle çalışmak için birkaç pratik öneri. İzinleri bağlam içinde isteyin: sistem iletişim kutusundan önce iznin neden gerekli olduğunu açıklayan bir ekran gösterin. Örneğin, kamerayı istemeden önce şunu gösterin: «QR kodlarını taramak için kamera erişimine ihtiyacımız var» — bu, onay olasılığını %40 artırır. Mobil uygulamalarda erişim izinleri, kullanım bağlamında istenmelidir.
İlk başlatmada tüm izinleri istemeyin. Bağlamsal izin isteği (kullanım anında isteme), kullanıcı tanıtımı sırasında istemeye göre %60 daha yüksek dönüşüm sağlar. Reddetmeyi nazikçe yönetin: kullanıcı reddederse, işlevselliği engellemeyin, bir alternatif sunun (örneğin, konum yerine manuel adres girişi). Mobil uygulama gizliliği bu yaklaşımdan faydalanır.
iOS için bir Privacy Manifest eklediğinizden emin olun (2025'ten itibaren tüm uygulamalar için zorunlu). Android için Google Play Console'da Veri Güvenliği Bölümü'nü belirtin. Tüm izinlerin durumunu yerel olarak saklayın ve sistem ayarlarıyla senkronize edin. Uyumluluğu düzenli olarak kontrol edin — mevzuat hızla değişir. Mobil uygulamanın erişim izni modeli ve gizliliği sürekli denetim gerektirir.
Sıkça Sorulan Sorular
ATT, kullanıcıyı izlemek için açık bir istek gerektiren bir Apple framework'üdür (iOS 14.5+). Onay olmadan IDFA sıfır döndürür. ATT isteği, izleme amacının net bir açıklamasını içermelidir. Kabul oranı uygulamaya bağlı olarak %15–25'tir. iOS'ta mobil uygulamada erişim izinleri, izleme amacının net bir şekilde açıklanmasını gerektirir.
Normal Permissions kurulum sırasında otomatik olarak verilir — istek gerekmez (INTERNET, VIBRATE). Dangerous Permissions runtime isteği gerektirir (CAMERA, LOCATION, MICROPHONE) — kullanıcı herhangi bir zamanda reddedebilir. Normal gizliliği etkilemez; Dangerous kişisel verilere erişim sağlar.
GDPR şunları gerektirir: veri toplama için açık onay, hesap ve verileri silme imkanı, ihlal bildirimleri. Uygulamalar için: ilk başlatmada onay banner'ı, veri toplama amaçlarının net açıklaması, ayarlarda «Hesabı Sil» düğmesi, erişim izni yönetimi dahil. Ceza — cironun %4'üne kadar.
IDFA (Reklamverenler için Tanımlayıcı), iOS'ta cihazın benzersiz reklam tanımlayıcısıdır. Reklam hedefleme ve yükleme ilişkilendirmesi için kullanılır. iOS 14.5'ten itibaren IDFA'ya erişmek için ATT aracılığıyla onay alınması gerekir. Android'de eşdeğeri GAID'dir (Google Advertising ID). Mobil uygulama gizliliği, reklam tanımlayıcıları üzerinde kontrol gerektirir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.