Mobil Uygulamalarda Rıza Yönetimi: SDK'lar, ATT ve KVKK
Mobil uygulamalar çerez kullanmaz; tarayıcı çerezinin yerini uygulama içindeki SDK'lar ve cihaz tanımlayıcıları alır. Ancak hukuki sonuç aynıdır: reklam, analitik ve kişiselleştirme amaçlı SDK'lar kişisel veri işler ve KVKK kapsamında açık rıza gerektirir. iOS'ta ayrıca App Tracking Transparency (ATT) izni, Android'de Google Play'in veri güvenliği beyanı zorunludur. Bu yazı, mobil uygulamalarda rızanın nasıl alınacağını, teknik olarak nasıl uygulanacağını ve web ile farklarını anlatır.
Mobilde "çerez" yerine ne var
| Web | Mobil karşılığı |
|---|---|
| Analitik çerezi | Firebase, Amplitude, Mixpanel gibi analitik SDK'ları |
| Pazarlama çerezi | Meta, TikTok, AppsFlyer, Adjust gibi reklam ve atıf SDK'ları |
| Çerez kimliği | IDFA (iOS), Advertising ID (Android), cihaz kimliği, IP |
| Local storage | UserDefaults, SharedPreferences, uygulama içi veri tabanı |
| Zorunlu çerez | Oturum yönetimi, güvenlik, çökme raporu gibi işlevsel SDK'lar |
IDFA ve Advertising ID, kişiyi cihaz üzerinden belirlenebilir kıldığı için kişisel veridir; sıfırlanabilir olmaları bu niteliği değiştirmez.
Rıza mimarisi: iki katman
Mobilde iki ayrı izin katmanı vardır ve ikisi birbirinin yerine geçmez:
- Platform izni. iOS'ta ATT penceresi ("İzin verme" / "İzin ver"), Android'de sistem izinleri. Bunlar Apple ve Google'ın mağaza kurallarıdır.
- KVKK rızası. Uygulamanın hangi SDK'yı hangi amaçla çalıştıracağına dair, kategori bazlı ve kayıt altına alınan rıza. ATT'ye "izin ver" demek KVKK rızası yerine geçmez; ATT yalnız izleme kimliğine erişimi düzenler.
Doğru sıralama: uygulama ilk açıldığında KVKK rıza ekranı gösterilir, kategoriler açıklanır, ardından reklam kategorisine rıza verilmişse ATT penceresi tetiklenir. Ters sıra, ATT'ye izin veren ama analitik SDK'sına rıza vermeyen kullanıcıda tutarsızlık yaratır.
Rıza verilmeyen SDK ne olmalı
İki yaklaşım vardır ve aralarında önemli fark bulunur:
- Engelleme: Rıza gelmeden SDK hiç başlatılmaz, ağ isteği gönderilmez. KVKK açısından en güvenli yol budur; rıza öncesi veri hiç çıkmaz.
- Rıza durumunu iletme: SDK başlatılır, rıza durumu parametre olarak iletilir ve SDK kendi tarafında sınırlı çalışır. Uygulaması kolaydır ama veri yine de dışarı çıkar; denetimde savunması zayıftır.
Efilli mobil rıza yönetimi her ikisini de destekler; engelleme yaklaşımı önerilir. Rıza kayıtları web ile aynı panelde tutulur ve Türkiye'deki veri tabanında saklanır. Desteklenen platformlar: native iOS ve Android, React Native, Flutter.
Uygulama adımları
- SDK envanteri çıkarın. Uygulamada hangi SDK'lar var, hangisi hangi veriyi nereye gönderiyor, sunucusu nerede. Yurt dışına giden SDK'lar için aktarım kuralları da geçerlidir.
- Kategorilere ayırın. Zorunlu, işlevsel, analitik, reklam. Zorunlu kategoriye yalnız uygulamanın çalışması için şart olanlar girer.
- Rıza ekranını tasarlayın. Kabul et ve reddet aynı belirginlikte olmalı; kategori bazında seçim mümkün olmalı; metin sade Türkçe olmalı.
- Engellemeyi kurun. Rıza gelmeden SDK başlatılmasın; uygulama açılış akışında bu sıralama test edilmelidir.
- Kaydı saklayın. Kim, ne zaman, hangi kategoriye, hangi metin sürümüyle rıza verdi. Kayıt sunucuda tutulmalı; cihaz belleği tek başına yeterli değildir.
- Ayarlar ekranı ekleyin. Kullanıcı rızasını istediği zaman değiştirebilmeli. Ayrıntı: rızanın geri alınması.
- Mağaza beyanlarını güncelleyin. App Store gizlilik etiketleri ve Google Play Veri Güvenliği formu, gerçek SDK davranışıyla tutarlı olmalıdır.
Sık kullanılan SDK'larda rıza nasıl uygulanır
Engelleme yaklaşımında her SDK'nın kendine ait bir "bekle" ayarı vardır. Mantık hep aynı: SDK'nın otomatik veri toplamasını kapatırsınız, ilgili kategoriye rıza gelince açarsınız. En yaygın SDK'lar için özet:
| SDK | Rıza gelmeden | Rıza verildikten sonra |
|---|---|---|
| Firebase Analytics | Info.plist ve AndroidManifest'te otomatik veri toplamayı kapatın (firebase_analytics_collection_enabled = false) | Toplamayı kodla açın ve rıza durumunu Consent Mode sinyalleriyle (setConsent) iletin |
| Google Ads / AdMob | Consent Mode varsayılan durumu "denied" olarak ayarlanır | ad_storage, ad_user_data ve ad_personalization kullanıcının seçimine göre güncellenir |
| AppsFlyer | SDK'nın başlatma çağrısı rızadan sonraya alınır | SDK başlatılır, Avrupa kullanıcıları için rıza bilgisi SDK'ya iletilir |
| Adjust | SDK rıza gelene kadar başlatılmaz | SDK başlatılır, üçüncü taraflarla veri paylaşımı rızaya göre açılır ya da kapalı kalır |
| Meta (Facebook) SDK | Otomatik uygulama olayları ve reklam kimliği toplama kapatılır | İkisi de açılır |
Ayar ve fonksiyon adları SDK sürümüne göre değişebiliyor. Kurulumdan önce her SDK'nın güncel dokümantasyonuna bakmanızı öneririz. Bir rıza yönetim platformu kullanıyorsanız bu eşleştirmeler kategori bazında tek yerden yapılır.
Flutter ve React Native uygulamalarında
Çapraz platform uygulamalarda arayüz Dart ya da JavaScript tarafında çizilir, ama SDK'ların çoğu native tarafta çalışır. Rıza kararı arayüz katmanında verilir ve native SDK'lara ulaşması gerekir. En sık görülen hata şu: rıza ekranı Flutter tarafında gösterilirken bir analitik SDK uygulama açılır açılmaz native tarafta başlamış olur. Test ederken ilk açılışta, rıza ekranı henüz ekrandayken ağ isteklerini izleyin. Efilli mobil rıza yönetimi native iOS ve Android'in yanında React Native ve Flutter'ı da destekler. Rıza kararı tek bir yerden verilir ve web sitenizle aynı panelde kaydedilir.
Mobil uygulamada Google Consent Mode
Consent Mode yalnızca web için değil. Firebase ve Google Ads SDK'ları da aynı dört sinyali kullanır: ad_storage, analytics_storage, ad_user_data ve ad_personalization. Avrupa'daki kullanıcılara kişiselleştirilmiş reklam ve yeniden pazarlama yapmak için bu sinyallerin uygulamadan da gönderilmesi gerekiyor. Efilli, uygulamadaki rıza kararını bu sinyallere otomatik çevirir. Web tarafındaki kurulum için Consent Mode v2 entegrasyonu sayfasına bakabilirsiniz.
Web ile farklar
| Konu | Web | Mobil |
|---|---|---|
| Tanımlayıcı | Çerez, tarayıcı silince gider | Reklam kimliği, uygulama silinene kadar kalır |
| Rıza kaydı | Çerez ve sunucu | Uygulama içi depolama ve sunucu; uygulama silinirse yerel kayıt gider |
| Platform kuralı | Tarayıcı ayarları | ATT ve mağaza politikaları, ihlalde uygulama yayından kaldırılabilir |
| Güncelleme | Anında yayınlanır | Mağaza onayı gerekir; rıza metni değişikliği sürüm planına girer |
Sıkça sorulan sorular
ATT izni aldım, KVKK rızasına gerek var mı?
Evet. ATT yalnız izleme kimliğine erişimi düzenler; analitik ve kişiselleştirme dahil diğer işlemeler için KVKK rızası ayrıca gerekir.
Uygulamamda reklam yok, yine de rıza gerekir mi?
Analitik SDK kullanıyorsanız evet. Yalnız çökme raporu ve oturum yönetimi varsa zorunlu kategoride değerlendirilebilir; envanter bunu gösterir.
Rıza ekranını uygulamanın ilk açılışında mı göstermeliyim?
Veri işleme başlamadan önce gösterilmelidir. İlk açılış en yaygın çözümdür; onboarding sonrası da olabilir, ama SDK'lar o ana kadar çalışmamalıdır.
Firebase Analytics için de rıza gerekir mi?
Firebase Analytics kullanıcı davranışını ve cihaz bilgisini işlediği için analitik kategorisinde değerlendirilir ve rıza gerektirir. Rıza gelene kadar otomatik toplamayı kapatıp rızayla açmak en temiz çözümdür. Yalnızca Crashlytics ile çökme raporu topluyorsanız bu işlem zorunlu kategoride değerlendirilebilir.
Web ve mobil rızaları birleştirebilir miyim?
Aynı panelde yönetilebilir ve raporlanabilir; ancak aynı kişinin web'de verdiği rıza mobil uygulamada otomatik geçerli sayılmaz, ortamlar ayrıdır.
Web tarafındaki çerezlerinizi görmek için ücretsiz tarama yapabilir, mobil rıza yönetimi için satış ekibiyle görüşebilirsiniz.
Mobil uygulamanız için: efilli, iOS ve Android uygulamalarınızdaki SDK rızalarını web sitenizle aynı panelden, KVKK ve GDPR'a uygun şekilde yönetmenizi sağlar. Mobil uygulama rıza yönetimini inceleyin.
.jpg)


