Mobil Geliştirmede Erişim İzinleri ve Gizlilik: Nedir, Hangi Mekanizmalar ve Nasıl Yapılandırılır

Yazar: IT Sectr Yayınlanma: 2026-05-17 Okuma süresi: 11 dk

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

  • Runtime Permission — uygulama çalışırken izin isteme (Android 6.0+, iOS 8.0+). Kullanıcı reddedebilir veya erişime izin verebilir.
  • Android: Normal Permission (otomatik), Dangerous Permission (runtime isteği gerektirir). Permission Group ilgili izinleri gruplar.
  • iOS: ATT (App Tracking Transparency) — IDFA izleme isteği. Privacy Manifest — toplanan veri türlerinin açıklaması. Info.plist Usage Description — her iznin kullanım amacının açıklaması.
  • GDPR (Genel Veri Koruma Yönetmeliği) — Avrupa veri koruma yönetmeliği. Kişisel verilerin toplanması için kullanıcının açık onayını gerektirir.
  • IDFA (iOS) ve GAID/AAID (Android) — hedefleme ve ilişkilendirme için kullanılan reklam tanımlayıcıları. IDFA'ya erişmek için ATT gereklidir.

iOS ve Android'de İzin Modelleri

İ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
MekanizmaKaynağ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 iptaliAyarlar → GizlilikAyarlar → Uygulamalar → İzinler
GruplamaHayır (her izin ayrı ayrı)Permission Groups (ör. STORAGE)
Reklam kimliğiIDFA (ATT gerekli)GAID / AAID (Google Play Services)
GizlilikPrivacy 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.

İzin Türleri (Normal, Dangerous, Runtime)

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

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
// 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.

Gizlilik (ATT, Privacy Manifest, IDFA)

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.

App Tracking Transparency (ATT)

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 ve Kullanıcı Onayı

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.

Pratik İpuçları

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 (App Tracking Transparency) nedir?

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.

Android'de Normal ve Dangerous Permission arasındaki fark nedir?

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 mobil uygulamaları nasıl etkiler?

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 nedir ve neden gereklidir?

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

  • Runtime Permission — izinleri «kullanım anında» isteyen modern model, kurulumda değil. Kullanıcı güvenini artırır.
  • Android: Normal (otomatik) ve Dangerous (runtime) izinler. Gruplama için Permission Groups. Açıklama için shouldShowRequestPermissionRationale.
  • iOS: IDFA için ATT (App Tracking Transparency). Privacy Manifest (2025'ten itibaren zorunlu). Her izin için Info.plist'te Usage Description.
  • GDPR — Avrupa yönetmeliği: açık onay, silme hakkı, şeffaflık. Cironun %4'üne kadar ceza. Araçlar: OneTrust, Google CMP.
  • IDFA (iOS) ve GAID/AAID (Android) — reklam tanımlayıcıları. IDFA için ATT gerekli (kabul oranı %15–25).
  • En iyi uygulamalar: bağlamsal istekler (%60 daha yüksek dönüşüm), reddetmeyi nazikçe yönetme, Privacy Manifest, düzenli uyumluluk denetimi.
  • Mobil uygulamada erişim izinleri ve gizlilik — kullanıcı güveninin temeli. Şeffaf uygulamaların kullanıcı tutma oranı %20 daha yüksektir (IT Sectr verileri, 2024).

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.

Projeyi tartış