IAP Test Ortamlarına Giriş
Uygulama içi satın almaları (IAP) yayınlamadan önce gerçek para harcamadan test etmeniz şart. Hem Apple hem Google, bu amaçla sandbox (kum havuzu) ortamları sunuyor. Bu ortamlar gerçek ödeme altyapısını simüle eder ama kartınızdan para çekmez.
Apple Sandbox Ortamı
Apple'ın sandbox sistemi üç katmandan oluşur:
1. Xcode StoreKit Configuration (Local Test)
En hızlı test yöntemi. Ağ bağlantısı bile gerektirmez:
- Xcode'da File > New > File > StoreKit Configuration File ile oluşturun
- Ürünlerinizi (consumable, non-consumable, subscription) bu dosyaya tanımlayın
- Scheme ayarlarında StoreKit Configuration alanına bu dosyayı seçin
- Uygulama çalıştığında StoreKit 2 API'leri bu lokal konfigurasyonu kullanır
Avantajları:
- App Store Connect'te ürün tanımlamaya gerek yok (geliştirme aşamasında)
- Çok hızlı, sunucu beklemesi yok
- Subscription yenileme sürelerini hızlandırabilirsiniz (1 ay = 5 dakika)
- Transaction geçmişini Xcode'dan görüntüleyebilirsiniz
2. Sandbox Environment (Apple Sunucusu)
Gerçek Apple sunucularına bağlanan test ortamı:
- App Store Connect'te ürünler tanımlı olmalıdır
- Sandbox Apple ID gerektirir (gerçek Apple ID'nizden farklı)
- Receipt validation test edilebilir
- Server-to-server notification'lar test edilebilir
3. TestFlight Beta Testing
Son aşama testi:
- Gerçek cihazlarda, gerçek kullanıcılarla test
- Sandbox ortamını kullanır (gerçek ödeme yapılmaz)
- 10.000'e kadar harici test kullanıcısı davet edilebilir
Sandbox Test Hesabı Oluşturma (Apple)
App Store Connect'ten sandbox tester hesabı oluşturma adımları:
- App Store Connect > Users and Access > Sandbox sekmesine gidin
- Tester Accounts altında "+" butonuna tıklayın
- Bilgileri doldurun:
- Ad, soyad (gerçek olması gerekmez)
- E-posta adresi (gerçek bir adres olmalı, doğrulama gelir)
- Şifre (en az 8 karakter, büyük/küçük harf + rakam)
- Ülke ve App Store bölgesi
- Hesabı kaydedin
Sandbox test hesabı için kullandığınız e-posta adresi daha önce bir Apple ID'ye kayıtlı olmamalıdır. Ayrıca bu hesapla App Store'a giriş yapmayın, sadece sandbox test için kullanın.
Cihazda Sandbox Hesabı Kullanma
- Ayarlar > App Store > Sandbox Account bölümünden sandbox hesabıyla giriş yapın
- Ana Apple ID'nizden çıkış yapmanıza gerek yok
- Uygulama içinde satın alma yapıldığında sandbox hesabı otomatik kullanılır
- "[Environment: Sandbox]" uyarısı görürseniz doğru ortamdasınız demektir
Sandbox Subscription Süreleri
Sandbox'ta abonelik süreleri hızlandırılmıştır:
| Gerçek Süre | Sandbox Süresi |
|---|---|
| 1 hafta | 3 dakika |
| 1 ay | 5 dakika |
| 2 ay | 10 dakika |
| 3 ay | 15 dakika |
| 6 ay | 30 dakika |
| 1 yıl | 1 saat |
- Sandbox'ta abonelik en fazla 12 kez otomatik yenilenir, sonra iptal olur
- Bu sınırı bilmek test stratejinizi etkiler
Google Play Test Ortamı
Google Play'de IAP testi için birkaç yöntem vardır:
License Testers
Google Play Console'dan test kullanıcıları tanımlama:
- Google Play Console > Settings > License testing bölümüne gidin
- Test edecek kişilerin Gmail adreslerini ekleyin
- Bu kullanıcılar uygulamanızı yükleyip IAP yaptığında gerçek ödeme yapılmaz
- License response olarak "RESPOND_NORMALLY" seçin
Test Tracks
Google Play'in test kanalları:
- Internal testing: En hızlı, 100 kişiye kadar, review süreci yok
- Closed testing: Belirli kullanıcı grupları, sınırlı review
- Open testing: Herkes katılabilir, tam review süreci
Internal testing trackı geliştirme sürecinde en çok kullanılan seçenektir. Yükledikten birkaç dakika sonra test edilebilir.
Google Play Billing Test Kartları
License tester olarak eklenen kullanıcılar şu test kartlarını görür:
- Test card, always approves: Her zaman başarılı ödeme
- Test card, always declines: Her zaman reddedilen ödeme
- Test card, slow decline: Birkaç dakika sonra reddedilen ödeme
Yaygın Test Hataları ve Çözümleri
| Hata | Neden | Çözüm |
|---|---|---|
| "Cannot connect to iTunes Store" | Sandbox sunucu sorunu | Birkaç dakika bekleyip tekrar deneyin |
| Products boş dönüyor | Ürün ID eşleşmiyor | Bundle ID ve product ID kontrol edin |
| "Payment not allowed" | Cihaz kısıtlaması | Ayarlar > Ekran Süresi > IAP'yi açın |
| Sandbox hesabı çalışmıyor | Hesap doğrulanmamış | E-posta doğrulamasını tamamlayın |
| Google "Item not found" | Ürün aktif değil | Play Console'da ürünü "Active" yapın |
| Google "Item already owned" | Önceki test kalıntısı | consumePurchase() ile tüketin veya Play Store > abonelik iptal |
IAP testinde en sık yapılan hata, product ID'lerin App Store Connect veya Play Console'daki tanımlarla birebir eşleşmemesidir. Her zaman önce konsol tarafını kontrol edin, sonra kodunuzdaki ID'lerle karşılaştırın.