Uygulamanız test cihazlarında sorunsuz çalışıyor, tasarımlar onaylandı ve geriye tek iş kaldı: kullanıcıların onu App Store ve Google Play'de bulabilmesi. Bu son adım çoğu ekibin tahmin ettiğinden uzun sürer, çünkü kod yazmaktan çok hesap, belge ve politika işidir. Yol kabaca şöyle: iki mağazada geliştirici hesabı açılır, uygulama kimliği ve imzalama ayarlanır, mağaza sayfası ve gizlilik beyanları doldurulur, derleme önce test kanalına yüklenir, ardından incelemeye gönderilir ve onaydan sonra kontrollü biçimde yayına alınır. Aşağıda bu süreci, projelerde en çok takıldığımız noktalarla birlikte dokuz adımda anlatıyoruz.
Başlamadan önce: iki mağaza aynı kuralları işletmez
App Store ve Google Play benzer bilgiler ister ama çalışma mantıkları farklıdır. Apple her sürümü insan incelemesinden geçirir, kurallarını tek bir belgede (App Review Guidelines) toplar ve beta testlerini TestFlight üzerinden yürütür. Google Play'de inceleme otomatik kontrollerle insan incelemesinin karışımıdır; asıl dikkat isteyen kısım Play Console'daki "Uygulama içeriği" beyanlarıdır. Flutter gibi tek kod tabanlı bir teknolojiyle geliştirdiyseniz kodunuz ortaktır ama mağaza süreçleri tamamen ayrı yürür. Hangi teknolojiyi seçeceğinize henüz karar vermediyseniz native ve cross-platform karşılaştırmamıza göz atabilirsiniz.
| Konu | App Store | Google Play |
|---|---|---|
| Hesap | Apple Developer Program, yıllık üyelik | Play Console, tek seferlik kayıt ücreti |
| Şirket hesabı | D-U-N-S numarası gerekir | D-U-N-S numarası gerekir |
| Test kanalı | TestFlight (dahili ve harici test) | Dahili, kapalı ve açık test kanalları |
| Yükleme biçimi | Xcode veya Transporter ile derleme | Android App Bundle (.aab) |
| Gizlilik beyanı | App Privacy bölümü (gizlilik etiketleri) | Veri güvenliği (Data safety) formu |
| Kontrollü yayın | Aşamalı yayın, yedi gün | Yüzdeye dayalı kademeli dağıtım |
Ücret tutarlarını bilerek yazmıyoruz; her iki şirket de tutarları zaman zaman güncelliyor. Hesap açarken resmi kayıt sayfasındaki güncel bilgiye bakın ve yıllık Apple yenilemesini bütçeye ayrı bir kalem olarak ekleyin. Diğer maliyet kalemlerini Flutter ile mobil uygulama bütçe rehberimizde ayrıntılı ele aldık.
Hazırlık: hesaplar, kimlikler ve imzalama
Geliştirici hesaplarını doğru türde açın. Hesap türü, mağazada uygulamanın altında görünen satıcı adını belirler ve sonradan değiştirmek zahmetlidir. Bireysel hesapta kişinin adı görünür, kuruluş hesabında ise şirketin unvanı. Kurumsal bir marka adına yayın yapıyorsanız kuruluş hesabı açın. Apple ve Google kuruluş hesapları için D-U-N-S numarası istiyor; numara Dun & Bradstreet üzerinden ücretsiz alınıyor ama Google'ın yardım sayfasına göre süreç 30 güne kadar uzayabiliyor. Şirket unvanı ve adresi D-U-N-S kaydıyla birebir eşleşmeli; "Ltd. Şti." ile "Limited Şirketi" farkı bile doğrulamayı geciktirebilir. Bu yüzden hesap işini geliştirme bitmeden, projenin ilk haftasında başlatın.
Paket adını ve Bundle ID'yi kalıcı olarak belirleyin. Android'deki applicationId (örneğin
com.firmaniz.uygulama) ve iOS'taki Bundle ID, uygulama yayınlandıktan sonra değiştirilemez. Değiştirmek mağazada yeni bir uygulama açmak demektir; mevcut kullanıcılar, puanlar ve yorumlar taşınmaz. Ters alan adı biçimini kullanın, markayı yansıtın, "test" veya "demo" gibi geçici ifadeler koymayın. App Store Connect'te uygulama kaydı oluşturmadan önce aynı kimliği Apple Developer hesabındaki Identifiers bölümünde tanımlayın.İmzalama anahtarlarını güvenceye alın. Mağaza, her güncellemenin aynı geliştiriciden geldiğini imza üzerinden doğrular. Google Play'de yeni uygulamalar Play Uygulama İmzalama ile yayınlanır: asıl imza anahtarını Google saklar, siz derlemeyi yükleme anahtarıyla (upload key) imzalarsınız. Yükleme anahtarını kaybederseniz destek üzerinden sıfırlatmak mümkün ama zaman alır; keystore dosyasını ve parolasını şifreli bir kasada, en az iki ayrı yerde saklayın. iOS'ta dağıtım sertifikası ve provisioning profilleri Xcode'un otomatik imzalamasıyla yönetilebilir; birden fazla geliştirici varsa sertifikanın hangi hesapta oluşturulduğunu not edin. Flutter projelerinde derleme komutları
flutter build appbundleveflutter build ipaolur; sürüm bilgisi pubspec.yaml dosyasındakiversion: 1.0.0+1satırından okunur.
Mağaza kaydı ve gizlilik beyanları
Mağaza sayfası materyallerini hazırlayın. Gereken liste: uygulama adı, kısa ve uzun açıklama, ikon, ekran görüntüleri, isteğe bağlı tanıtım videosu, destek adresi ve gizlilik politikası bağlantısı. Uygulama adı iki mağazada da 30 karakterle sınırlı; Google Play ayrıca 80 karakterlik bir kısa açıklama ister. Ekran görüntüleri cihaz sınıflarına göre istenir; iPhone'un yanında iPad'i de destekliyorsanız ikinci bir set hazırlamanız gerekir. Görseller uygulamanın gerçek arayüzünü göstermeli: Apple yönergeleri meta verinin uygulamayı doğru temsil etmesini şart koşar ve tasarım maketiyle hazırlanmış, uygulamada olmayan ekranlar ret sebebidir.
Gizlilik ve içerik beyanlarını gerçek davranışla eşleştirin. Apple'ın App Privacy bölümü ve Google'ın Veri güvenliği formu, uygulamanın topladığı verileri mağaza sayfasında kullanıcıya etiket olarak gösterir. Beyan ile gerçek davranış uyuşmazsa uygulama reddedilir ya da yayından sonra kaldırılabilir. Önce kullandığınız tüm SDK'ları (analitik, çökme raporu, reklam, ödeme, harita) ve topladıkları verileri listeleyin, beyanı bu listeye göre doldurun. Uygulamada hesap oluşturulabiliyorsa hesap silme seçeneği zorunludur: Apple silmenin uygulama içinden başlatılabilmesini ister, Google ise buna ek olarak uygulamayı kaldırmış kullanıcıların da ulaşabileceği bir web bağlantısı ister. Play Console'da ayrıca içerik derecelendirme anketi, hedef kitle, reklam beyanı ve giriş gerektiren bölümler için "Uygulama erişimi" bilgileri doldurulur. Türkiye'deki kullanıcılar için gizlilik politikası ve aydınlatma metni hazırlarken KVKK yükümlülüklerini de hesaba katın; web siteleri için hazırladığımız KVKK kontrol listesi mobil uygulamada da iyi bir başlangıç noktasıdır.
Test kanalları ve incelemeye gönderme
Önce test kanalında yayınlayın. Mağaza sürümünde ortaya çıkan hataların önemli bir kısmı (yanlış sunucu adresi, kapalı unutulmuş özellik bayrağı, eksik izin metni) yalnızca mağaza üzerinden dağıtılan derlemede görünür. iOS'ta TestFlight ile ekibinizden 100 kişiye kadar dahili, 10.000 kişiye kadar harici test kullanıcısı ekleyebilirsiniz; harici teste giden ilk derleme kısa bir beta incelemesinden geçer. Google Play'de dahili test kanalı en fazla 100 kişiyle hızlı dağıtım sağlar, kapalı ve açık testler daha geniş gruplar içindir. Önemli bir ayrıntı: 13 Kasım 2023'ten sonra açılmış kişisel Play Console hesaplarında, üretime geçiş başvurusundan önce en az 12 test kullanıcısının en az 14 gün boyunca kesintisiz katıldığı bir kapalı test şartı bulunuyor. Bireysel hesapla çalışıyorsanız bu iki haftayı takvime baştan ekleyin.
İncelemeye gönderirken inceleyicinin işini kolaylaştırın. İnceleyici uygulamanızı birkaç dakika içinde anlayabilmeli; anlayamadığı her şey potansiyel ret sebebidir. Giriş gerektiren uygulamalarda çalışan bir demo hesabı verin ve arka uç sunucusunun inceleme süresince açık olduğundan emin olun; Apple yönergeleri bunu açıkça ister. İnceleme notlarına kamera, konum veya Bluetooth gibi izinlerin hangi özellik için istendiğini, donanım gerektiren bir işlev varsa nasıl denenebileceğini ve ödeme akışının nerede olduğunu kısa maddelerle yazın. Apple, başvuruların en az yarısını 24 saatten, yüzde 90'ını 48 saatten kısa sürede incelediğini belirtiyor. Google Play'de ise özellikle yeni hesaplarda ve ilk sürümde inceleme birkaç gün sürebiliyor. Lansman tarihini tek bir incelemeye göre değil, olası bir ret ve yeniden gönderim turunu da hesaba katarak planlayın.
En sık ret sebepleri ve çözümleri
Ret almak sürecin olağan bir parçasıdır; önemli olan gerekçeyi doğru okumak. Projelerde en sık karşılaştığımız durumları aşağıda topladık:
| Ret sebebi | Tipik görünümü | Çözüm |
|---|---|---|
| Çökme veya eksik işlev | Açılışta çökme, boş ekranlar, "yakında" yazan menüler | Farklı cihaz ve işletim sistemi sürümlerinde test edin, yarım özellikleri gizleyin |
| Demo hesabı çalışmıyor | Süresi dolmuş şifre, SMS doğrulaması isteyen giriş | Kalıcı test hesabı açın, doğrulama adımını bu hesap için atlatın |
| Asgari işlevsellik | Web sitesini bir çerçeve içinde gösteren uygulama | Bildirim, çevrimdışı kullanım, cihaz özellikleri gibi gerçek mobil değer ekleyin |
| Gizlilik beyanı uyuşmazlığı | Bir SDK'nın topladığı veri beyanda yok | SDK envanterini çıkarıp beyanı güncelleyin |
| Yetersiz izin açıklaması | "Uygulama kameranıza erişmek istiyor" gibi genel metin | İznin hangi işlev için istendiğini somut cümleyle yazın |
| Dijital içerikte harici ödeme | Premium özellik için web ödeme sayfasına yönlendirme | Dijital içerik ve özelliklerde mağaza içi satın alma kullanın |
| Meta veri sorunları | Başlıkta "#1", fiyat ifadesi, rakip marka ya da başka platformun logosu | Başlığı sade tutun, görselleri uygulamanın kendi ekranlarından alın |
| Hesap silme eksik | Kayıt var, silme yolu yok | Uygulama içi silme ekleyin; Google için web bağlantısını da verin |
Apple, ret gerekçesini App Store Connect'teki inceleme mesajlarında ilgili yönerge maddesiyle birlikte yazar; buradan yanıt verebilir, düzeltip yeniden gönderebilir ya da karara itiraz edebilirsiniz. Google Play'de ret e-postası ve Play Console'daki politika durumu sayfası ihlal edilen politikayı gösterir. Her iki durumda da gerekçeyi tam anlamadan aynı derlemeyi küçük değişikliklerle tekrar tekrar göndermek süreci yalnızca uzatır.
Yayın ve sürüm yönetimi
Yayın yöntemini seçin. Onaydan sonra App Store'da uygulamayı hemen, belirlediğiniz bir tarihte ya da elle yayına alabilirsiniz. Güncellemelerde aşamalı yayın seçeneği, otomatik güncellemeleri yedi gün boyunca giderek artan bir kullanıcı oranına dağıtır ve gerektiğinde duraklatılabilir. Google Play'de kademeli dağıtımla güncellemeyi önce küçük bir yüzdeye açar, çökme ve "uygulama yanıt vermiyor" (ANR) oranlarına bakıp yüzdeyi artırırsınız; sorun görürseniz dağıtımı durdurursunuz. İlk sürümde buna genellikle gerek kalmaz, ancak sonraki her önemli güncellemede kullanmanızı öneririz.
Sürüm numaralandırmasını baştan kurala bağlayın. Mağazalar aynı numarayla ikinci bir derlemeyi kabul etmez; karışık numaralandırma hangi hatanın hangi sürümde çıktığını takip etmeyi de zorlaştırır. Kullanıcının gördüğü sürüm adı için 1.4.2 biçiminde anlamsal sürümleme kullanın (büyük değişiklik, yeni özellik, düzeltme). Android'deki versionCode ve iOS'taki build numarası her yüklemede artmalıdır. Her sürüm için kısa ve anlaşılır bir "Yenilikler" metni yazın. Kritik bir hata için Apple'dan hızlandırılmış inceleme talep edebilirsiniz; bu bir hak değil istisnadır ve hatanın nasıl tekrarlandığını anlatmanız beklenir. Sunucu tarafında geriye dönük uyumsuz bir değişiklik yapacaksanız, uygulama içine bir asgari sürüm kontrolü koymak eski sürümde kalan kullanıcıların bozuk bir deneyim yaşamasını önler.
Yayından sonra da mağazalar sizden düzenli güncelleme bekler. Google Play, yeni uygulama ve güncellemelerin hedeflemesi gereken Android API seviyesini her yıl yükseltir; Apple da belirli tarihlerden sonra derlemelerin güncel Xcode ve SDK ile yapılmasını şart koşar. Uzun süre güncellenmeyen bir uygulama bir gün yeni sürüm yükleyemez hâle gelebilir. Bu yüzden yayın planına yılda en az bir iki bakım sürümünü baştan ekleyin.
Sık yapılan hatalar
- Hesap işini son haftaya bırakmak: D-U-N-S ve kimlik doğrulama haftalar sürebilir; yazılım hazırken hesap beklemek en yaygın gecikme sebebidir.
- Uygulamayı ajansın hesabından yayınlamak: Uygulama markanın kendi geliştirici hesabında olmalı, ajans ekip üyesi olarak yetkilendirilmeli. Sonradan hesap transferi mümkündür ama gereksiz bir iş yüküdür.
- Keystore'u tek bir bilgisayarda tutmak: Disk arızası, Android güncellemelerini günlerce durdurabilir.
- Demo hesabını onaydan sonra silmek: Her güncelleme yeniden incelenir; test hesabı kalıcı olmalı.
- Gizlilik politikasını başka bir uygulamadan kopyalamak: Metin, sizin topladığınız verilerle ve mağaza beyanlarıyla tutarlı olmalı.
- Tüm testleri emülatörde yapmak: Bildirim, kamera ve ödeme akışları gerçek cihazda farklı davranabilir.
Sık Sorulan Sorular
Uygulamayı mağazaya çıkarmak toplam ne kadar sürer?
Hesaplar hazırsa ve beyanlar eksiksizse, test dahil birkaç gün ile iki hafta arasında yayına çıkmak mümkündür. Kuruluş hesabı için D-U-N-S beklemesi, kişisel Play hesabındaki 14 günlük kapalı test şartı ve olası bir ret turu bu süreyi uzatır. Biz takvim çıkarırken hesap ve test süreçlerini yazılımla paralel başlatıyoruz.
Bireysel hesapla mı, şirket hesabıyla mı yayınlamalıyım?
Uygulama bir işletmeyi temsil ediyorsa şirket hesabı daha doğru seçimdir: mağazada unvanınız görünür, kullanıcı güveni artar ve hesap tek bir kişiye bağlı kalmaz. Kişisel projeler ve denemeler için bireysel hesap yeterlidir.
Yayınlanmış bir uygulamayı başka bir hesaba taşıyabilir miyim?
Evet. Hem App Store Connect hem Play Console'da uygulama transferi süreci var. Ancak bazı özellikler ve entegrasyonlar transferi zorlaştırabilir, bu yüzden uygulamayı baştan doğru hesapta açmak en temiz yoldur.
Google Play'deki 12 test kullanıcısı şartı herkes için geçerli mi?
Hayır. Bu şart, 13 Kasım 2023'ten sonra açılmış kişisel Play Console hesaplarına uygulanıyor. Kuruluş hesapları bu kapalı test şartına tabi değil; yine de yayın öncesinde test kanalı kullanmanızı öneririz.
Web sitemizi uygulamaya dönüştürüp yayınlayabilir miyiz?
Siteyi yalnızca bir çerçeve içinde gösteren uygulamalar Apple'ın asgari işlevsellik maddesine takılır. Uygulamanın web sitesinin ötesinde değer sunması gerekir: bildirimler, çevrimdışı erişim, kamera veya konum gibi cihaz özellikleri, daha hızlı bir akış.
Her güncelleme yeniden incelemeye girer mi?
Evet, iki mağazada da yeni her sürüm incelemeden geçer. Güncellemeler genellikle ilk sürümden hızlı onaylanır; ama yeni bir izin, ödeme akışı veya hassas veri ekliyorsanız inceleme notlarını yeniden güncelleyin.
Yayın sürecini birlikte planlayalım
Mağaza süreci, iyi hazırlanınca öngörülebilir bir iştir: hesaplar erken açılır, beyanlar gerçek davranışla eşleşir, test kanalı atlanmaz ve sürümler kurala bağlanır. Uygulamanızı geliştirirken ya da hazır bir projeyi mağazaya çıkarırken bu adımları sizinle birlikte yürütebiliriz. Mobil uygulama geliştirme hizmetimizi inceleyebilir veya projenizin durumunu anlatmak için bizimle iletişime geçebilirsiniz.


