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

WebMobil karşılığı
Analitik çereziFirebase, Amplitude, Mixpanel gibi analitik SDK'ları
Pazarlama çereziMeta, TikTok, AppsFlyer, Adjust gibi reklam ve atıf SDK'ları
Çerez kimliğiIDFA (iOS), Advertising ID (Android), cihaz kimliği, IP
Local storageUserDefaults, SharedPreferences, uygulama içi veri tabanı
Zorunlu çerezOturum 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ı

  1. 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.
  2. Kategorilere ayırın. Zorunlu, işlevsel, analitik, reklam. Zorunlu kategoriye yalnız uygulamanın çalışması için şart olanlar girer.
  3. 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ı.
  4. Engellemeyi kurun. Rıza gelmeden SDK başlatılmasın; uygulama açılış akışında bu sıralama test edilmelidir.
  5. 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.
  6. Ayarlar ekranı ekleyin. Kullanıcı rızasını istediği zaman değiştirebilmeli. Ayrıntı: rızanın geri alınması.
  7. 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:

SDKRıza gelmedenRıza verildikten sonra
Firebase AnalyticsInfo.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 / AdMobConsent Mode varsayılan durumu "denied" olarak ayarlanırad_storage, ad_user_data ve ad_personalization kullanıcının seçimine göre güncellenir
AppsFlyerSDK'nın başlatma çağrısı rızadan sonraya alınırSDK başlatılır, Avrupa kullanıcıları için rıza bilgisi SDK'ya iletilir
AdjustSDK rıza gelene kadar başlatılmazSDK başlatılır, üçüncü taraflarla veri paylaşımı rızaya göre açılır ya da kapalı kalır
Meta (Facebook) SDKOtomatik 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

KonuWebMobil
TanımlayıcıÇerez, tarayıcı silince giderReklam kimliği, uygulama silinene kadar kalır
Rıza kaydıÇerez ve sunucuUygulama 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üncellemeAnında yayınlanırMağ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.

Sitenizdeki çerezleri iki dakikada görün

Alan adınızı girin, hangi çerezlerin rıza gerektirdiğini ücretsiz görün.
Sitenizi Ücretsiz Tarayın