Tüm Yazılar
KategoriAndroid
Okuma Süresi
15 dk
Yayın Tarihi
2025-02-10
Kelime Sayısı
3.128kelime

Kahveni hazırla - bu içerikli bir makale!

Google Play Politika Uyumu: Data Safety, İzinler ve Red

Özet

Google Play politika uyumu data safety izinler: formu alan alan doğru doldurma, hassas izin beyanları, hesap/veri silme zorunluluğu ve abonelik şeffaflığı — resmi Play Console kaynaklarıyla.

  • Data Safety formu internal testing hariç tüm track'lerde zorunlu; veri toplamasan bile doldurmak ve gizlilik politikası linki eklemek şart.
  • Hassas izinleri yalnızca store listing'de tanıtılan mevcut bir özellik için, kullanıcı o özelliğe dokunduğunda (in-context) iste.
  • Uygulama içi hesap oluşturma sunan uygulamalar hem uygulama içi hem web üzerinden hesap/veri silme yolu sağlamak zorunda.
  • Abonelik ekranında fiyat, faturalama sıklığı ve otomatik yenileme koşulunu kullanıcıdan ek işlem gerektirmeden açıkça göster.
Google Play Politika Uyumu: Data Safety, İzinler ve Red

Google Play'de bir güncelleme gönderip "Rejected" e-postası aldığında saat genelde geriye işlemeye başlar: hangi politika, hangi ekran, hangi form alanı. Bu rehber Data Safety formunu alan alan doğru doldurmayı, hassas izin beyanlarını, hesap/veri silme zorunluluğunu ve abonelik şeffaflığı kurallarını Google'ın resmi Play Console Help sayfalarındaki birebir ifadelerle anlatıyor; amaç bir sonraki gönderiminde aynı ihlali tekrarlamaman.

💡 Pro Tip: Data Safety formunu her sürüm göndermeden önce değil, veri toplama davranışını değiştiren her değişiklikte (yeni SDK, yeni izin, yeni analytics eklentisi) güncelle — form ile gerçek davranış arasındaki uyumsuzluk, tek başına red nedenidir.

İçindekiler

Play Politika Ekosistemi: Nereden Başlamalı

Google Play politikaları tek bir doküman değil, birbirine bağlı birkaç katmandan oluşur: Developer Program Policies (genel çerçeve), Data Safety gereksinimleri, Permissions politikası, User Data politikası ve kategori-özel kurallar (finans, sağlık, çocuklar). Bir uygulama genellikle birden fazla katmana aynı anda tabidir; örneğin hassas izin isteyen bir uygulama hem Permissions politikasına hem User Data politikasına hem de Data Safety formuna uymak zorundadır.

Geliştiriciler için pratik sonuç şu: politika ihlali genellikle tek bir kuralın değil, iki katman arasındaki tutarsızlığın sonucudur. Store listing sayfasında beyan ettiğin özellik ile uygulamanın gerçekte istediği izin örtüşmüyorsa, Data Safety formunda "toplamıyorum" dediğin bir veri türünü bir SDK arka planda gönderiyorsa, red gelir.

Bu tutarsızlığı gönderim öncesi yakalamanın en ucuz yolu, bağımlılık listeni elle gözden geçirmek yerine komut satırından çıkarmaktır. Aşağıdaki komut, projendeki tüm transitive bağımlılıkları listeler; her satırı SDK'nın kendi gizlilik dokümantasyonuyla eşleştirip Data Safety formuna aktarman gerekir.

bash
1# Tüm release bağımlılıklarını (transitive dahil) tek dosyaya çıkar
2./gradlew app:dependencies --configuration releaseRuntimeClasspath > deps-release.txt
3 
4# Reklam/analytics/crash-reporting gibi veri toplama ihtimali yüksek SDK'ları filtrele
5grep -Ei 'ads|analytics|crashlytics|firebase|facebook|adjust|appsflyer' deps-release.txt

Bu listeyi Data Safety formunu doldurmadan önce çıkarmak, formu ikinci kez düzeltme ihtiyacını büyük ölçüde azaltır — çünkü her SDK'nın veri toplama davranışını tek tek unutmak yerine, somut bir kontrol listesinden çalışırsın.

Data Safety Formu: Alan Alan Doğru Doldurma

Data Safety formu, internal testing track'inde aktif olan uygulamalar hariç tüm yayın track'lerinde zorunludur. Google'ın kendi ifadesiyle: "Apps that are active on internal testing tracks are exempt from inclusion in the data safety section." Yani closed/open testing veya production'a çıkan her sürüm formu doldurmak zorundadır.

Hiç veri toplamayan bir uygulama bile bu yükümlülükten muaf değildir. Google açıkça şunu belirtiyor: "Even developers with apps that do not collect any user data must complete this form and provide a link to their privacy policy." Formu boş bırakmak veya atlamak seçenek değildir; "veri toplamıyorum" seçeneğini işaretleyip gizlilik politikası linkini yine de eklemen gerekir.

Formu doldururken en çok atlanan nokta üçüncü taraf SDK'lardır. Google'ın politikası net: "This includes data collected and handled through any third-party libraries or SDKs used in their apps." Reklam SDK'sı, crash reporting aracı, analytics kütüphanesi — hepsi senin beyanına dahildir, "ben o veriyi toplamıyorum, SDK topluyor" savunması geçerli değildir.

Neyin "toplama" sayılmadığını bilmek de en az neyin sayıldığını bilmek kadar önemli. Üç istisna var:

  • Yalnızca cihaz-üstü işleme: "User data accessed by your app that is only processed locally on the user's device and not sent off device does not need to be disclosed."
  • Uçtan uca şifreleme: "User data that is sent off device, but that is unreadable by you or anyone other than the sender and recipient as a result of end-to-end encryption does not need to be disclosed."
  • Service provider transferi: Veriyi senin adına işleyen bir "service provider"a aktarım, paylaşım (sharing) olarak sayılmaz.

Bir veri türünü "optional" (isteğe bağlı) olarak işaretleyebilmen için tek şart, cihaz veya bölge farkı gözetmeksizin tüm kullanıcıların ya bilgiyi isteğe bağlı sağlayabilmesi, ya opt-out ya da opt-in yapabilmesidir. Yalnızca belirli bir ülkedeki kullanıcılara opt-out veriyorsan, formda bunu "optional" olarak işaretleyemezsin.

Data Safety formunda alan alan doğru sınıflandırma şu tabloya göre yapılabilir:

Alan
Doğru Cevap Kriteri
Veri toplanıyor mu
Cihaz-dışına gönderilen HER veri türü için evet
Paylaşılıyor mu
Service provider aktarımı hariç, üçüncü tarafa giden her veri için evet
Zorunlu mu / isteğe bağlı mı
İsteğe bağlı yalnızca tüm kullanıcılar opt-in/opt-out yapabiliyorsa
Amaç
Gerçek kullanım amacı (ör. "App functionality", "Analytics", "Advertising")
Şifreleme yolda
Yalnızca gerçekten TLS/uçtan uca şifreleniyorsa işaretle
Silme talebi desteği
Kullanıcı veri silmeyi talep edebiliyorsa işaretle

Uygulama bağımsız bir güvenlik incelemesi (MASA — Mobile Application Security Assessment) rozeti de alabilir; bu isteğe bağlıdır ve geliştirici tarafından finanse edilir: "This is an optional review undertaken and paid for by developers. Through MASA (Mobile Application Security Assessment) developers can work directly with a Google Authorized Lab." Zorunlu değildir ama hassas veri işleyen finans/sağlık uygulamalarında güven sinyali olarak işe yarar.

Hassas İzinler ve Restricted Permissions Beyanı

Google Play, kalıcı cihaz kimlikleriyle (IMEI, IMSI, SIM seri numarası) kişisel/hassas kullanıcı verisi veya sıfırlanabilir reklam kimliklerinin eşleştirilmesini yasaklar: "Google Play prohibits linking persistent device identifiers (such as IMEI, IMSI, or SIM Serial #) to personal and sensitive user data or resettable device identifiers." Kalıcı kimliğe dayanan eski entegrasyon desenleri bu maddeye takılır.

Hassas kullanıcı verisi kapsamı geniştir ve Google'ın tanımına göre şunları içerir: "personally identifiable information, financial and payment information, authentication information, phonebook, contacts, device location, SMS and call-related data, health data…" Bu kategorilerden birine erişen her izin, Restricted Permissions politikasına tabidir.

Restricted Permissions için iki temel kural var. Birincisi, izin kullanımı store listing'de tanıtılan mevcut bir özelliğe bağlı ve "in-context" olmalı: "You may only request permissions and APIs that access sensitive information that are necessary to implement current features or services in your app that are promoted in your Google Play listing." İkincisi, kullanıcı reddi manipülasyonla aşılamaz: "Respect users' decisions if they decline a request for a Restricted Permission, and users may not be manipulated or forced into consenting to any non-critical permission."

In-context izin isteğini pratikte şöyle kurarsın: kullanıcı ilgili özelliğe dokunmadan izin diyaloğu açılmaz.

kotlin
1// Kullanıcı "Konumu Paylaş" butonuna bastığında izin iste — uygulama açılışında DEĞİL
2button.setOnClickListener {
3 when {
4 ContextCompat.checkSelfPermission(
5 context, Manifest.permission.ACCESS_FINE_LOCATION
6 ) == PackageManager.PERMISSION_GRANTED -> {
7 shareCurrentLocation()
8 }
9 else -> {
10 requestPermissionLauncher.launch(Manifest.permission.ACCESS_FINE_LOCATION)
11 }
12 }
13}

Bu desen iki şeyi aynı anda çözer: hem "in-context" gereksinimini karşılar hem de Data Safety formundaki "konum toplama amacı" alanını (ör. "App functionality") somut ve savunulabilir kılar — çünkü izin isteği ile özelliğin kullanımı zaman içinde birebir örtüşür.

Hesap ve Veri Silme Zorunluluğu

Uygulama içi hesap oluşturma sunan her uygulama için Google iki ayrı yol tanımlıyor: "If your app enables account creation, you must: provide users with an in-app path to delete their app accounts and associated data; and provide a web link resource where users can request app account deletion and associated data deletion." Yani tek bir web formu yeterli değildir — uygulama içinde de bir silme yolu olmak zorunda.

Google'ın ilan ettiği takvimde Data deletion sorularının tamamlanması için son tarih 7 Aralık 2023'tü; Play Console üzerinden uzatma talep edenler için bu süre 31 Mayıs 2024'e kadar uzuyordu. Bu makalenin yayın tarihi olan 2025-02-10 itibarıyla zorunluluk tüm hesap-oluşturan uygulamalar için tam yürürlüktedir. Pratikte iki ayrı akış kurman gerekir: biri Play Store listing sayfasında linklenen bir web sayfası (uygulamayı silmeden de erişilebilir), diğeri uygulama ayarları içinde "Hesabımı Sil" gibi bir menü öğesi.

Gereksinim
Uygulama İçi
Web
Hesap silme talebi
Zorunlu
Zorunlu
İlişkili veri silme
Zorunlu
Zorunlu
Store listing'de link
Gerekmiyor
Zorunlu
Uygulama yüklü olmadan erişim
Mümkün değil
Zorunlu şart

Abonelik ve Faturalandırma Politikaları

Google Play, abonelik teklifinde şeffaflığı zorunlu tutar: "You must be transparent about your offer. This includes clearly and explicitly disclosing your offer terms, the cost of your subscription, the frequency of your billing cycle, the automatic renewal terms, whether a subscription is required to use the app, and any other material information about the subscription." Politikanın saydığı kalemler (teklif koşulları, abonelik ücreti, faturalama sıklığı, otomatik yenileme koşulları, uygulamayı kullanmak için aboneliğin şart olup olmadığı ve aboneliğe dair diğer esaslı bilgiler) satın alma akışının kullanıcı tarafından ek işlem gerektirmeden görülebileceği bir yerde durmalı.

Aynı politika, abonelik modelinin ne sunması gerektiğini de tanımlar: "Subscriptions must provide sustained or recurring value to users throughout the life of the subscription, and may not be used to offer what are effectively one-time benefits to users (for example, SKUs that provide lump sum in-app credits/currency, or single-use game boosters)." Tek seferlik bir dijital ürünü (örneğin tek bir PDF rapor) abonelik olarak paketlemek bu maddeyi ihlal eder.

Deneme veya tanıtım fiyatlandırması sunuyorsan, dönemin sonunda otomatik ücretli aboneliğe geçileceğini açıkça belirtmemek ihlal örneği olarak sayılıyor: "Offers that do not clearly explain that the user will be automatically enrolled in a paid subscription at the end of the offer period." Deneme süresi biten kullanıcı satın alma ekranına dönmeden önce, o ekranda bu bilgi zaten net biçimde yazmalı — dipnot veya küçük harf yeterli değildir.

Satın alma ekranında gösterilmesi gereken minimum şeffaflık setini şöyle modelleyebilirsin:

json
1{
2 "offerTitle": "Aylık Plan",
3 "price": "₺149,99 / ay",
4 "billingCycle": "Her ay otomatik yenilenir",
5 "trialPeriod": "7 gün ücretsiz, sonra otomatik ücretli aboneliğe geçer",
6 "cancelInfo": "Play Store > Abonelikler'den istediğin an iptal edebilirsin"
7}

Sık Görülen İhlal Örnekleri ve Düzeltmeleri

Google'ın politika sayfalarında numaralandırılmış tek bir "en sık red nedenleri" listesi yok; her politika kendi ihlal örneklerini kendi sayfasında tanımlıyor. Aşağıdaki tablo, Data Safety, User Data ve Subscriptions politikalarında geçen somut ihlal örneklerini ve karşılık gelen düzeltmeyi bir araya getiriyor — istatistik değil, doğrudan politika metninden alınmış örnekler.

İhlal Örneği
Kaynak Politika
Düzeltme
Reklam varlığını yanlış beyan etmek
Prepare your app for review
Store listing'de "Contains ads" etiketini doğru işaretle
Data Safety formu ile gerçek SDK davranışının uyuşmaması
Data Safety
Her SDK güncellemesinde formu yeniden gözden geçir
Hassas izni promosyonu yapılmayan bir özellik için istemek
Restricted Permissions
İzni yalnızca store listing'de tanıtılan özellik için iste
Deneme sonrası otomatik ücretlendirmeyi gizlemek
Subscriptions
Satın alma ekranında yenileme koşulunu açıkça yaz
Tek seferlik faydayı abonelik gibi sunmak
Subscriptions
Süregelen değer sağlamıyorsa tek seferlik ürün (managed product) kullan
Gizlilik politikası linkini eksik bırakmak
Prepare your app for review
Hassas veri/çocuk uygulamalarında link hem listing'de hem uygulama içinde olmalı

Reklam varlığını yanlış beyan etmenin sonucu ciddi: "If you misrepresent the presence of ads in your app(s), it's considered a violation of the Google Play policies and may result in your app(s) being suspended." Bu madde özellikle "Contains ads" etiketini bilinçli olarak atlayan uygulamalar için askıya alma riskini açıkça belirtiyor.

Reddedilen Uygulamayı Yeniden Gönderme (Resubmit) Süreci

Bir güncelleme reddedildiğinde veya uygulama kaldırıldığında panik yapmana gerek yok — Google'ın kendi ifadesiyle süreç destek ekibiyle iletişime geçmeden de tamamlanabilir: "If your update is rejected or your app is removed, please follow the instructions below to resubmit your app for review. You can complete these steps without contacting or waiting for a reply from the policy support team." Yani destek talebi açıp yanıt beklemek zorunda değilsin; ihlali düzeltip doğrudan yeniden gönderebilirsin.

Pratikte adımlar şöyle işler: önce Play Console'daki red e-postasında veya Policy Center panelinde hangi politikanın ihlal edildiği belirtilir, sonra ilgili değişikliği yapıp (Data Safety formu güncelleme, izin kaldırma, gizlilik politikası linki ekleme gibi) yeni bir sürüm olarak gönderirsin. Google, yeniden inceleme için ilan edilmiş bir süre taahhüdü yayınlamıyor; başvurunun durumunu Play Console'daki Policy Center panelinden takip edersin.

Bir politika ihlali çoğu zaman birden fazla politika sayfasını aynı anda ilgilendirir; yalnızca red e-postasında belirtilen tek maddeyi düzeltip göndermek bu yüzden yetmeyebilir — örneğin hatalı bir izin beyanı hem Restricted Permissions politikasını hem de Data Safety formunu aynı anda ihlal ediyor olabilir. Yeniden gönderim öncesi tüm ilgili politika sayfalarını (Permissions, Data Safety, User Data) tek tek gözden geçirmek, ikinci bir red turunu önler.

Gizlilik politikası zorunluluğu iki ayrı senaryoda devreye girer. Hassas izin veya veri isteyen uygulamalar için: "For apps that request access to sensitive permissions or data... You must link to a privacy policy on your app's store listing page and within your app." Çocuklara yönelik uygulamalar için ise hassas veri erişimi olmasa bile zorunluluk aynen geçerli: "For apps that target children: You must link to a privacy policy... regardless of your app's access to sensitive permissions or data."

ALTIN İPUCU

Bu yazının en değerli bilgisi

Bu ipucu, yazının en önemli çıkarımını içeriyor.

Easter Egg

Gizli bir bilgi buldun!

Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?

Okuyucu Ödülü

Bu rehberi baştan sona okuyup PLAYPOLICY7 anahtarını bulduysan, aşağıdaki yayın-öncesi kontrol listesini bir sonraki Google Play gönderiminde adım adım uygula — her maddesi bu makalede kaynağıyla birlikte anlatılan gerçek bir politika gereksinimidir.

Yayın Öncesi Uyum Kontrol Listesi

Yukarıdaki ödül listesi PLAYPOLICY7 ile açılan detaylı versiyondu; burada aynı kontrolün özet sıralaması var, gönderim öncesi hızlı tarama için:

  1. Data Safety formu güncel mi (SDK/izin değişikliğinden sonra)
  2. Gizlilik politikası linki hem store listing'de hem uygulama içinde mi
  3. Hassas izinler yalnızca tanıtılan özellik için mi isteniyor
  4. Hesap/veri silme yolu hem uygulama içi hem web'de mi
  5. Abonelik ekranı fiyat + yenileme + iptal bilgisini gösteriyor mu
  6. Reklam beyanı ("Contains ads") doğru mu

SSS

Data Safety formu nasıl doğru doldurulur?

Formu doldururken tek bir kural yeterli: uygulamanın ve içindeki tüm üçüncü taraf SDK'ların cihaz-dışına gönderdiği her veri türünü beyan et. Google'ın kendi ifadesiyle "This includes data collected and handled through any third-party libraries or SDKs used in their apps" — yani reklam, analytics, crash reporting kütüphaneleri de senin beyanına dahil. Yalnızca cihaz-üstünde kalan veya uçtan uca şifrelenmiş veri beyandan muaf.

Google Play'de uygulamam neden reddedildi?

Play Console'daki red e-postası veya Policy Center paneli hangi politikanın ihlal edildiğini belirtir; politika metinlerinde açıkça ihlal örneği olarak sayılanlar arasında Data Safety formu ile gerçek SDK davranışının uyuşmaması, hassas iznin store listing'de tanıtılmayan bir özellik için istenmesi ve abonelik şeffaflığı eksiklikleri var. Google numaralandırılmış bir "en sık red nedenleri" listesi yayınlamıyor; düzeltme, ihlali giderip Google'ın kendi ifadesiyle "without contacting or waiting for a reply from the policy support team" yeniden göndermekle başlıyor.

Hassas izin (SMS, konum, erişilebilirlik) beyanı nasıl yapılır?

Hassas izni yalnızca store listing'de tanıtılan mevcut bir özellik için, izin diyaloğunu o özelliğe dokunulduğunda açarak (in-context) iste. Kullanıcı izni reddederse bu kararı manipülasyonla aşmaya çalışma — Google bunu açıkça yasaklıyor. İznin eriştiği veri türü aynı zamanda Data Safety formunda da beyan edilmeli.

Hesap silme zorunluluğu kimleri kapsıyor?

Uygulama içinde hesap oluşturma sunan her uygulamayı kapsıyor. Bu uygulamalar hem uygulama içinde bir silme yolu hem de uygulama yüklü olmadan da erişilebilen bir web linki sağlamak zorunda; ikisi de eksiksiz olmalı, yalnız web linki yeterli değil.

Güncelleme (Eylül 2026)

Bu makalenin gövdesi 2025-02-10 tarihindeki politika durumunu yansıtıyor. O tarihten bugüne (2026-09-24) Google Play politikalarında, Data Safety ve izin beyanı konusuyla doğrudan ilgili şu değişiklikler duyuruldu:

  • Duyuru 2025-03-05: Health Connect üzerinden erişilen hassas sağlık verisi kuralları sıkılaştırıldı (support.google.com/googleplay/android-developer/answer/15931464).
  • Duyuru 2025-10-30: Yaş kısıtlamalı içerik (dating/gambling/matchmaking kategorileri) için yeni Age-Restricted Content and Functionality politikası duyuruldu; geliştiricilere uyum için duyurudan itibaren 30 gün tanındı (support.google.com/googleplay/android-developer/answer/16550159).
  • Yürürlük 2026-01-01 (duyuru 19 Kas 2025): Age Signals API için veri kullanım kısıtları başlıyor (support.google.com/googleplay/android-developer/answer/16706838).
  • Uyum son tarihi 2026-01-28 (duyuru 9 Ara 2025): ABD'de alternatif faturalandırma ve harici içerik linkleri için uyum gereksinimleri güncellendi (support.google.com/googleplay/android-developer/answer/16671517).
  • Yürürlük 2026-09-30: Android geliştirici doğrulaması kapsamında Play uygulamalarını Play Console'a kaydetme zorunluluğu geliyor; kaydı yapılmayan uygulamalar Google Play'den kaldırılabilir (support.google.com/googleplay/android-developer/answer/10788890).

Bu değişikliklerin hiçbiri makalenin gövdesindeki Data Safety formu, Restricted Permissions veya hesap silme kurallarının temel mantığını değiştirmedi — mevcut süreç hâlâ geçerli. Geliştirici doğrulaması ve Health Connect kısıtları gibi kalemler ayrı, kategori-özel gereksinimler olarak üstüne eklendi.

Sonuç

Google Play politika uyumu tek seferlik bir kontrol değil, her SDK güncellemesinde, her yeni izin ekleyişinde tekrarlanması gereken bir disiplin. Data Safety formunu davranışla senkron tut, hassas izinleri yalnızca tanıtılan özellik için ve in-context iste, hesap oluşturan uygulamalarda hem uygulama içi hem web silme yolu sağla, abonelik ekranında fiyat ve yenileme koşulunu gizleme.

İlgili konularda derinleşmek istersen: abonelik altyapısını server tarafında doğrulamak için sunucu taraflı makbuz doğrulama rehberi makalesine, Play Billing v7 geçişi için Google Play Billing v7 abonelik rehberi makalesine, Android 15'in gizlilik değişiklikleri için Android 15 gizlilik ve Privacy Sandbox rehberi makalesine, Health Connect entegrasyonu için Health Connect Android entegrasyon rehberi makalesine ve production Android mimarisi için Jetpack Compose 1.7 performans rehberi makalesine göz atabilirsin.

Kaynaklar

Etiketler

#Google Play#Data Safety#Play Console#Android izinler#Play Billing#app review#gizlilik politikası
Muhittin Çamdalı

Muhittin Çamdalı

Lead Mobile Engineer

12+ yıllık deneyime sahip Lead Mobile Engineer. Swift, SwiftUI, Kotlin ve Flutter ile iOS, Android ve cross-platform mimarilerde uzman. Performanslı ve kullanıcı dostu mobil uygulamalar geliştiriyorum.

iOS Geliştirme Haberleri

Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.

Paylaş

İlgili İçerik