NK
Oyun geliştirme7 dk okuma

Claude Code ile iOS oyunu yapıp App Store'dan onay almak

Oyunu yazmak bir hafta sürüyor. Mağazaya çıkarmak ayrı bir iş. İkisini de planlamak gerekiyor.

NKYazan — Kurucu, Noyan Bilişim
Claude Code ile iOS oyunu yapıp App Store'dan onay almak
Bu yazıda
  1. Başlamadan önce
  2. Teknoloji seçimi
  3. Projeyi kurmak
  4. Oyunu yaparken
  5. Mağazaya hazırlık
  6. TestFlight
  7. İncelemeye göndermek
  8. Red gelirse
  9. Son söz

Son bir yılda birkaç oyunu App Store'a gönderdim. Her seferinde aynı şeyi gördüm: oyunun kendisini yazmak, işin en hızlı ilerleyen kısmı. Claude Code ile çalışan bir oyun birkaç gün içinde telefonda açılıyor. Beni asıl uğraştıran kısım sonradan geliyor: mağaza görselleri, gizlilik metinleri, yaş derecelendirmesi, inceleme notları ve ilk red mesajı.

Bu yazıda o süreci baştan sona anlatıyorum. Teknik kurulumdan inceleme ekibinin karşısına çıkana kadar. Amacım şu: ilk gönderimde onay alma ihtimalini en yükseğe çıkarmak.

Fikirden mağazaya altı adımlık süreç
Süreç: kurallar, prototip, TestFlight, mağaza, inceleme, yayın.

Başlamadan önce

İhtiyacın olanlar kısa bir liste:

  • Bir Mac ve güncel Xcode. 28 Nisan 2026'dan beri App Store Connect'e yüklenen uygulamaların Xcode 26 ve iOS 26 SDK ile derlenmesi gerekiyor. Eski bir Xcode ile başlarsan yükleme aşamasında duvara çarparsın.
  • Apple Developer Program üyeliği. Yıllık ücretli. Bireysel ya da şirket olarak açabilirsin. Şirket hesabında mağazada şirket adın görünüyor; bu kararı baştan ver.
  • Claude Code. Terminalde çalışıyor ve projenin bütün dosyalarını görüyor. Xcode projesini terminalden derleyebiliyor, simülatörde çalıştırabiliyor ve hata çıktılarını kendisi okuyabiliyor.

Teknoloji seçimi

Küçük ve orta ölçekli oyunlar için ben yerel teknolojileri tercih ediyorum: arayüz için SwiftUI, 2D oyun için SpriteKit, 3D için SceneKit ya da RealityKit. Üçüncü taraf bir oyun motoru elbette kullanılabilir ama yerel teknolojide iki büyük avantaj var. Birincisi uygulama boyutu küçük kalıyor. İkincisi inceleme sürecinde sürpriz daha az oluyor; Apple'ın kendi araçlarıyla yapılmış bir uygulamada izin, gizlilik ve performans tarafı daha öngörülebilir.

Projeyi kurmak

İlk iş, Claude Code'a kuralları yazmak. Projenin köküne bir CLAUDE.md dosyası koyuyorum. İçinde şunlar var:

Markdown
# CLAUDE.md
Uygulama: Örnek Oyun
Bundle ID: com.sirketim.ornekoyun
Hedef: iOS 17 ve üzeri, iPhone ve iPad
Teknoloji: SwiftUI + SpriteKit, harici bağımlılık yok
Diller: Türkçe ve İngilizce, tüm metinler String Catalog'da
Kurallar:
- Placeholder metin, boş ekran, "yakında" butonu yok
- Her değişiklikten sonra simülatörde derle ve çalıştır
- Hesap açma yok; ilerleme cihazda ve iCloud'da
- Reklam varsa önce izin, sonra reklam

Bu dosya, sonradan inceleme ekibinin soracağı birçok sorunun cevabını en baştan sabitliyor. Mesela "placeholder yok" kuralı, en sık görülen red sebeplerinden birini daha ilk günden engelliyor.

Sonra Claude Code'dan projeyi terminalden derleyip simülatörde çalıştırmasını istiyorum. xcodebuild ile derliyor, hata varsa çıktıyı okuyup düzeltiyor, sonra tekrar deniyor. Ben her adımda simülatöre bakıyorum. Bu döngü o kadar hızlı ki, oyunun temel mekaniği genellikle ilk gün oynanabilir hale geliyor.

xcodebuild ile derleme, simülatörde çalıştırma ve arşivleme komutları
Claude Code'un döngüsü: derle, simülatörde çalıştır, arşivle.

Oyunu yaparken

Birkaç alışkanlık işimi çok kolaylaştırıyor:

  • Önce çekirdek döngü. Oyunun beş saniyelik özü eğlenceli değilse, efekt eklemek kurtarmıyor. İlk hedefim her zaman oynanabilir, sade bir sürüm.
  • Dil desteğini baştan ekle. Türkçe ve İngilizceyi sonradan eklemek, bütün metinleri tek tek bulmak demek. String Catalog ile baştan başlamak hem sana hem Claude'a zaman kazandırıyor.
  • İlerlemeyi kaydet. Oyuncu uygulamayı kapattığında kaldığı yerden devam edebilmeli. Bu, inceleme ekibinin de dikkat ettiği bir şey.
  • Gerçek cihazda test et. Simülatörde akıcı görünen bir sahne eski bir iPhone'da takılabiliyor. TestFlight'a çıkmadan önce mutlaka gerçek bir cihazda dene.
  • Hissi unutma. Dokunma geri bildirimi, ses, küçük animasyonlar. Bunlar oyunun kalitesini çok değiştiriyor ve Claude'a tarif etmesi kolay.

Mağazaya hazırlık

Kod bittiğinde iş bitmiyor. App Store Connect'te bir dizi şey hazırlaman gerekiyor. Ben bunu bir kontrol listesine çevirdim.

App Store Connect gönderim öncesi kontrol listesi
Göndermeden önce kontrol listesi.

İsim ve kimlik

Uygulama adı en fazla 30 karakter olabiliyor ve benzersiz olmak zorunda. Aklındaki isim alınmışsa, adın yanına kısa bir tanım eklemek işe yarıyor. Ana ekranda görünen isim farklı kalabilir. İkon 1024×1024 boyutunda, şeffaflık olmadan hazırlanıyor.

Mağaza metinleri

Mağaza sayfası, oyunun vitrini. Birkaç alanın sınırını bilmek işini kolaylaştırıyor:

  • Alt başlık: En fazla 30 karakter. Oyunun ne olduğunu tek cümlede anlat: "Kelime ve kart bulmacası" gibi.
  • Anahtar kelimeler: En fazla 100 karakter, virgülle ayrılmış. Uygulama adında ve alt başlıkta geçen kelimeleri tekrar yazma; bu alan zaten onları kapsıyor.
  • Tanıtım metni: En fazla 170 karakter. İnceleme gerektirmeden güncellenebiliyor; yeni bölüm, etkinlik ya da güncelleme duyurusu için ideal.
  • Açıklama: İlk üç satır en önemlisi, çünkü kullanıcı çoğu zaman "devamını oku"ya basmıyor. Oyunun neden eğlenceli olduğunu ilk cümlede söyle.

Bu metinleri her dil için ayrı hazırlıyorum ve Claude'a yazdırıyorum. Kuralım şu: çeviri değil, yerelleştirme. Türkçe sayfada Türk oyuncunun aradığı kelimeler, İngilizce sayfada İngilizce konuşan oyuncunun aradığı kelimeler geçmeli. Aynı metni çevirip bırakmak, mağaza aramasında ciddi fırsat kaçırmak demek.

Ekran görüntüleri

Apple, cihaz boyutu başına en fazla 10 ekran görüntüsüne izin veriyor; dosyalarda şeffaflık olmamalı. iPhone için en az bir set gerekiyor. Oyun iPad'de de çalışıyorsa iPad için de ayrı bir set hazırlaman lazım. Ekran görüntüleri uygulamayı kullanırken göstermeli; sadece logo, açılış ekranı ya da giriş sayfası yeterli değil. Bu kural, inceleme kurallarında açıkça yazıyor.

Ben ekran görüntülerini de Claude'a hazırlatıyorum. Simülatörden oyunun en iyi anlarını alıyor, üstüne kısa başlıklar ekliyor ve her dil için ayrı set üretiyor. Türkçe ve İngilizce mağaza sayfası için ayrı görseller, dönüşümü belirgin şekilde etkiliyor.

Tılsım Solitaire App Store ekran görüntüleri
Tılsım Solitaire'in mağaza görselleri: her biri oyunu kullanırken gösteriyor, başlıklar oyuncunun dilinde.

Gizlilik politikası ve destek sayfası

Bu, en çok atlanan adım. Apple'a göre her uygulama, mağaza bilgilerinde ve uygulamanın içinde gizlilik politikasına bağlantı vermek zorunda. Ayrıca güncel iletişim bilgisi olan bir destek sayfası da gerekiyor.

Bunun için büyük bir web sitesine ihtiyacın yok. Ben her oyun için iki sayfalık basit bir site hazırlatıyorum: gizlilik ve destek. Ücretsiz bir barındırma servisine koyup bağlantıları hem App Store Connect'e hem oyunun ayarlar ekranına ekliyorum.

Uygulama gizlilik bilgileri

App Store Connect'te, uygulamanın hangi verileri topladığını ve nasıl kullandığını beyan ettiğin bir bölüm var. Mağaza sayfasında "gizlilik etiketi" olarak görünüyor. Burada dürüst ve eksiksiz olmak çok önemli. Reklam ya da analitik kütüphanesi kullanıyorsan, o kütüphanelerin topladığı veriler de senin beyanına dahil.

Reklam kullanıyorsan bir konu daha var: kullanıcıyı uygulamalar arası takip eden bir reklam yapın varsa, önce App Tracking Transparency izni istemen gerekiyor. İzin istemeden takip yapan uygulamalar reddediliyor.

Yaş derecelendirmesi

Apple yaş derecelendirme sistemini yeniledi. Artık 4+, 9+, 13+, 16+ ve 18+ kategorileri var ve yeni soruların cevaplanması gerekiyor. Oyunda şiddet, kumar benzeri mekanikler, kullanıcılar arası sohbet ya da kullanıcı içeriği varsa soruları dikkatle cevapla. Yanlış bir beyan, onaydan sonra bile sorun çıkarabiliyor.

Şifreleme beyanı

Her yüklemede sana uygulamanın şifreleme kullanıp kullanmadığı soruluyor. Oyunun sadece standart HTTPS kullanıyorsa ve kendi şifrelemeni yapmıyorsan, Info.plist dosyasına ITSAppUsesNonExemptEncryption anahtarını NO olarak eklemek bu soruyu her seferinde cevaplamaktan kurtarıyor. Emin değilsen Apple'ın ihracat uyumluluğu sayfasını oku.

Hesap varsa

Oyunda hesap açma varsa, hesabı uygulamanın içinden silme imkanı da sunman gerekiyor. Üçüncü taraf bir giriş yöntemi kullanıyorsan, Apple'ın veri toplamayı ad ve e-posta ile sınırlayan eşdeğer bir giriş seçeneği sunma kuralına dikkat et. Benim tavsiyem: zorunlu değilse hesap açtırma. İlerlemeyi cihazda ve iCloud'da tutmak hem oyuncu için hem inceleme için daha kolay.

Gelir modeli

Gelir modelini de en baştan seçmek gerekiyor, çünkü inceleme sürecini doğrudan etkiliyor. Ücretli bir oyunda iş görece sade. Ücretsiz ve reklamlı bir oyunda gizlilik beyanı ve takip izni devreye giriyor. Uygulama içi satın alma varsa, her ürünün App Store Connect'te tanımlanması, inceleme için hazır olması ve oyunda geri yükleme butonunun bulunması gerekiyor. Benim tercihim ilk sürümde sade başlamak: ödüllü reklam ya da hiç reklam. Oyun tutunursa satın almaları sonraki güncellemede ekliyorum. Bu yaklaşım hem ilk incelemeyi kolaylaştırıyor hem de oyuncunun gerçekten neye para vermek istediğini görmeden ürün tasarlamanı engelliyor.

TestFlight

Mağazaya göndermeden önce oyunu TestFlight'tan dağıtıyorum. Claude Code arşivi terminalden oluşturup yükleyebiliyor; ben genelde ilk yüklemeyi Xcode'un Organizer penceresinden yapıyorum, sonrakileri terminalden.

İç test grubuna kendimi ve birkaç arkadaşımı ekliyorum. Gelen geri bildirimleri olduğu gibi Claude'a veriyorum: "Mağaza butonuna basınca ekran donuyor", "Türkçe'ye geçince bazı yazılar İngilizce kalıyor". Her geri bildirim bir düzeltme, yeni bir derleme ve yeni bir TestFlight sürümü demek. Bu döngüyü iki üç kez döndükten sonra oyun mağazaya hazır hale geliyor.

İncelemeye göndermek

Gönderirken "Notes for Review" alanını boş bırakma. Oyunun nasıl oynandığını iki üç cümleyle anlat. Hesap gerekiyorsa bir demo hesabı ver. Özel bir izin istiyorsan nedenini yaz. Reklam varsa nerede çıktığını belirt. İnceleme ekibinin işini kolaylaştırmak, onay ihtimalini artırıyor.

Süre konusunda Apple'ın verdiği bilgi şu: gönderimlerin en az yarısı 24 saatten, yüzde 90'ı 48 saatten kısa sürede inceleniyor.

Red gelirse

Red mesajı gelirse panik yapma. Mesaj hangi kurala takıldığını yazıyor. En sık gördüğüm sebepler:

  • 2.1 Uygulama bütünlüğü. Çöken bir ekran, çalışmayan bir buton, boş bir sayfa ya da placeholder metin. Çözümü: TestFlight'ta her ekranı tek tek gez.
  • 2.3 Doğru meta veri. Ekran görüntüleri uygulamayı yansıtmıyorsa ya da açıklama olmayan bir özellikten bahsediyorsa.
  • 4.2 Asgari işlev. Çok sığ ya da bir web sitesini paketlemekten ibaret uygulamalar.
  • 4.3 Spam. Mağazada zaten çok sayıda benzeri olan, özgün bir şey katmayan uygulamalar. Popüler bir oyunun birebir kopyası bu yüzden reddediliyor. Kendi dokunuşunu kat.
  • 5.1.1 Gizlilik. Gizlilik politikası bağlantısı eksik ya da çalışmıyor, hesap silme yok.

Red mesajına App Store Connect içinden cevap verebiliyorsun. Neyi düzelttiğini kısa ve net yaz, gerekiyorsa ekran görüntüsü ekle. Bir yanlış anlaşılma varsa kibarca açıkla. Net ve saygılı bir cevap çoğu zaman işi çözüyor.

Son söz

Claude Code oyun geliştirmenin hızını değiştirdi. Ama mağaza süreci hala aynı dikkati istiyor. Fark şu: artık o süreçte de yalnız değilsin. Gizlilik sayfasını, ekran görüntülerini, mağaza metinlerini, inceleme notlarını ve red cevaplarını da aynı asistanla hazırlayabiliyorsun.

Benim için en büyük ders şu oldu: mağazayı en sona bırakma. Gizlilik, dil desteği, ilerleme kaydı ve placeholder kuralı ilk günden projenin içinde olursa, onay da çok daha kolay geliyor. Son oyunum Tılsım Solitaire'e göz atabilirsin; sorularını da bana yazabilirsin.

EtiketlerClaude CodeiOSApp Storeoyun geliştirmeTestFlight
PaylaşLinkedInXWhatsApp
Diğer yazılar
(—) İletişim

Yeni bir ürün, bir ortaklık ya da iyi bir fikir.

E-mailnoyan@noyankalay.com
İstanbul’da saat
--:--
Instagram
@noyan.kalay

Genellikle 24 saat içinde dönüş yaparım.