React Native SDK'da hataları yönetin
SDK tarafından döndürülen her hata AdaptyErrorCode türündedir. İşte bir örnek:
Hata ayıklamadan önce verbose logları etkinleştirin. Çoğu AdaptyError, altta yatan bir StoreKit, Play Billing, ağ veya backend hatasını sarar. Verbose loglar açıkken (adapty.setLogLevel('verbose') — saf RN veya Expo için Logging bölümüne bakın), bu sarılı hata konsola yazdırılır ve genellikle asıl nedeni gösterir.
Bu çözümler sorununuzu gidermezse, destek ekibiyle iletişime geçmeden önce atmanız gereken adımlar için Diğer sorunlar bölümüne bakın; bu bizi daha verimli yardım etmenize yardımcı olacaktır.
try {
const params: MakePurchaseParamsInput = {};
await adapty.makePurchase(product, params);
} catch (error) {
if (
error instanceof AdaptyError &&
error.adaptyCode === getErrorCode('cantMakePayments')
) {
// Bu cihazda uygulama içi satın almaya izin verilmiyor
}
}
error.adaptyCode bir sayıdır, dolayısıyla bir sayıyla karşılaştırın: ya doğrudan bir değer (1003) ya da getErrorCode('<name>') sonucu kullanın. ErrorCode ise bunun tersini yapar — sayıdan ada dönüşüm sağlar — bu nedenle karşılaştırma için değil, yalnızca loglama için kullanın.
Kullanıcının iptal ettiği bir satın alma işlemi hata değildir. makePurchase, type’ı 'user_cancelled' olan bir AdaptyPurchaseResult ile sonuçlanır — bkz. Satın alma işlemleri.
Sistem StoreKit Kodları
| Hata | Kod | Çözüm |
|---|---|---|
| unknown | 0 | Bilinmeyen veya beklenmedik bir hata oluştuğunu belirten hata kodu. Yeniden deneyin veya Diğer sorunlar bölümüne bakın. |
| clientInvalid | 1 | İstemcinin denenen işlemi gerçekleştirmesine izin verilmediğini belirten hata kodu. |
| paymentCancelled | 2 | Kullanıcının ödeme isteğini iptal ettiğini belirten hata kodu. Herhangi bir işlem yapmanız gerekmez; ancak iş mantığı açısından kullanıcıya indirim teklif edebilir ya da daha sonra hatırlatabilirsiniz. |
| paymentInvalid | 3 | Ödeme parametrelerinden birinin App Store tarafından tanınmadığını belirten hata kodu. |
| paymentNotAllowed | 4 | Kullanıcının ödeme yapmaya yetkili olmadığını belirten hata kodu. |
| storeProductNotAvailable | 5 | İstenen ürünün mağazada mevcut olmadığını belirten hata kodu. Uygulamayı yeniden yüklemeyi deneyin. |
| cloudServicePermissionDenied | 6 | Kullanıcının bulut hizmeti bilgilerine erişime izin vermediğini belirten hata kodu. |
| cloudServiceNetworkConnectionFailed | 7 | Cihazın ağa bağlanamadığını belirten hata kodu. |
| cloudServiceRevoked | 8 | Kullanıcının bu bulut hizmetini kullanma iznini iptal ettiğini belirten hata kodu. |
| privacyAcknowledgementRequired | 9 | Kullanıcının Apple’ın gizlilik politikasını henüz onaylamadığını belirten hata kodu. |
| unauthorizedRequestData | 10 | Uygulamanın, gerekli yetkiye sahip olmadığı bir özelliği kullanmaya çalıştığını belirten hata kodu. |
| invalidOfferIdentifier | 11 |
İstediğiniz tekliflerin AppStore Connect’te ayarlandığından ve geçerli bir teklif tanımlayıcısı iletildiğinden emin olun. |
| invalidSignature | 12 | Ödeme indirimindeki imzanın geçerli olmadığını belirten hata kodu. |
| missingOfferParams | 13 | Ödeme indiriminde parametrelerin eksik olduğunu belirten hata kodu. |
| invalidOfferPrice | 14 | App Store Connect’te belirttiğiniz fiyatın artık geçerli olmadığını belirten hata kodu. Teklifler her zaman indirimli bir fiyatı temsil etmelidir. |
Özel Android kodları
| Hata | Kod | Çözüm |
|---|---|---|
| adaptyNotInitialized | 20 | Adapty SDK’yı Adapty.activate metoduyla düzgün yapılandırmanız gerekiyor. Nasıl yapılacağını öğrenmek için React Native bağlantısına bakın. |
| productNotFound | 22 | Bu hata, satın alınmak istenen ürünün mağazada mevcut olmadığını gösterir. |
| currentSubscriptionToUpdateNotFoundInHistory | 24 | Yenilenmesi gereken orijinal abonelik bulunamadı. |
| billingServiceTimeout | 97 | Bu hata, isteğin Google Play yanıt vermeden önce maksimum zaman aşımına ulaştığını gösterir. Buna, örneğin Play Billing Library çağrısının talep ettiği eylemin gecikmesi neden olabilir. |
| featureNotSupported | 98 | İstenen özellik, mevcut cihazda Play Store tarafından desteklenmiyor. |
| billingServiceDisconnected | 99 | Bu kritik hata, istemci uygulamanın BillingClient aracılığıyla Google Play Store hizmetiyle olan bağlantısının kesildiğini gösterir. |
| billingServiceUnavailable | 102 | Bu geçici hata, Google Play Billing hizmetinin şu anda kullanılamadığını gösterir. Çoğu durumda bu, istemci cihaz ile Google Play Billing hizmetleri arasında bir ağ bağlantısı sorunu olduğu anlamına gelir. |
| billingUnavailable | 103 | Bu hata, satın alma işlemi sırasında kullanıcı kaynaklı bir ödeme hatası oluştuğunu gösterir. Bu hatanın oluşabileceği durumlar şunlardır: 1. Kullanıcının cihazındaki Play Store uygulaması güncel değil. 2. Kullanıcı desteklenmeyen bir ülkede. 3. Kullanıcı bir kurumsal kullanıcıdır ve kurumsal yöneticisi satın alma işlemlerini devre dışı bırakmıştır. 4. Google Play, kullanıcının ödeme yöntemini tahsil edemiyor. Örneğin, kullanıcının kredi kartının süresi dolmuş olabilir. 5. Kullanıcı Play Store uygulamasında oturum açmamış. |
| developerError | 105 | Bu, bir API’yi hatalı kullandığınızı gösteren kritik bir hatadır. |
| billingError | 106 | Bu, Google Play’in kendisinde dahili bir sorun olduğunu gösteren kritik bir hatadır. |
| itemAlreadyOwned | 107 | Consumable ürün zaten satın alınmış. |
| itemNotOwned | 108 | Bu hata, öğe üzerindeki istenen eylemin başarısız olduğunu gösterir. |
| billingNetworkError | 112 | Bu hata, cihaz ile Play sistemleri arasındaki ağ bağlantısında bir sorun yaşandığını gösterir. |
Özel StoreKit kodları
| Hata | Kod | Çözüm |
|---|---|---|
| noProductIDsFound | 1000 | Bu hata, paywall’da talep ettiğiniz ürünlerin hiçbirinin App Store’da listelenmesine rağmen satın alınabilir durumda olmadığını gösterir. Bu hata bazen Bu hatayla karşılaşıyorsanız Kod-1000 |
| productRequestFailed | 1002 | Şu anda mevcut ürünler alınamıyor. Olası neden: - Henüz önbellek oluşturulmamış ve aynı anda internet bağlantısı yok. |
| cantMakePayments | 1003 | Bu cihazda Uygulama İçi satın almalar izin verilmiyor. Sorun giderme kılavuzuna bakın. |
| noPurchasesToRestore | 1004 | Adapty React Native SDK 4.0.3’te kullanımdan kaldırıldı: restorePurchases() artık bu hatayı döndürmüyor. Geri yüklenecek bir şey olmadığında yöntem mevcut profille çözümlenir; bu nedenle içindeki access level durumunu kontrol edin. Önceki SDK sürümlerinde bu hata, Google Play’in geri yüklenecek satın almayı bulamadığını gösterir. |
| cantReadReceipt | 1005 | Cihazda geçerli bir makbuz mevcut değil. Bu, sandbox testi sırasında sorun oluşturabilir. Herhangi bir işlem yapılması gerekmiyor; ancak iş mantığı açısından kullanıcınıza indirim teklif edebilir ya da daha sonra hatırlatabilirsiniz. |
| productPurchaseFailed | 1006 | Ürün satın alımı başarısız oldu. Bu, altta yatan bir StoreKit hatasını sarmalıyor — gerçek nedeni öğrenmek için sarmalanan hatayı okuyun (veya konsolda görmek için ayrıntılı günlükleri etkinleştirin). Sarmalanan hata genellikle yukarıdaki tablodaki StoreKit 0–14 kodlarından biridir; en yaygın olanları paymentCancelled, paymentInvalid, paymentNotAllowed veya invalidOfferPrice’tır. Belirli bir neden tespit edemiyorsanız yeni bir sandbox profili deneyin; sorun devam ederse Apple desteğiyle iletişime geçin. |
| refreshReceiptFailed | 1010 | Bu hata, makbuzun alınamadığını gösterir. Yalnızca StoreKit 1 için geçerlidir. |
| receiveRestoredTransactionsFailed | 1011 | Satın alma geri yüklemesi başarısız oldu. |
Özel ağ kodları
| Hata | Kod | Çözüm |
|---|---|---|
| notActivated | 2002 | Adapty SDK etkinleştirilmemiş. En sık karşılaşılan durum: bir splash ekranı veya erken bir UI kancası, adapty.activate tamamlanmadan önce Adapty metodlarını çağırdığında görülür. Belirti aralıklıdır ve gerçek cihaz zamanlaması farklı olduğundan simülatörde yeniden üretilemeyebilir. Diğer SDK çağrılarını planlamadan önce activate metodunu await ile bekleyin. Tam sıralama için bkz. React Native SDK’da çağrı sırası. |
| badRequest | 2003 | Geçersiz istek. App Store ile entegrasyon için gereken tüm adımları tamamladığınızdan emin olun. |
| serverError | 2004 | Sunucu hatası. Bir süre sonra tekrar deneyin. Sorun çözülmezse Adapty destek ekibiyle iletişime geçin. |
| networkFailed | 2005 | Bu hata, kullanıcının cihazındaki ağ bağlantısıyla ilgili sorunları gösterir. VPN’i devre dışı bırakmayı veya mobil ağdan WiFi’ye (ya da tersi) geçmeyi deneyin. |
| decodingFailed | 2006 | Bu hata, yanıt kodunun çözülmesinin başarısız olduğunu gösterir. Kodunuzu gözden geçirin ve gönderdiğiniz parametrelerin geçerli olduğundan emin olun. Örneğin bu hata, geçersiz bir API anahtarı kullandığınızı gösterebilir. |
| encodingFailed | 2009 | Bu hata, istek kodlamasının başarısız olduğunu gösterir. |
| analyticsDisabled | 3000 | Devre dışı bıraktığınız için analitik etkinliklerini işleyemiyoruz. |
| wrongParam | 3001 | Bu hata, bazı parametrelerinizin doğru olmadığını gösterir. Adapty paywall builder kullanıyorsanız ve bu hata nedeniyle bir paywall görüntüleyemiyorsanız, paywall builder’da Show on device seçeneğini açın. Bu sorunun bir diğer olası nedeni, yerel yedek dosya sürümünün SDK sürümüyle eşleşmemesidir. Kontrol panelinden yeni bir dosya indirin. |
| activateOnceError | 3005 | .activate metodu birden fazla kez çağrılamaz. |
| profileWasChanged | 3006 | İşlem sırasında kullanıcı profili değiştirildi. Bu durum, adapty.identify hâlâ devam ederken bir metod çağrıldığında gerçekleşir — devam eden çağrı, değiştirilmek üzere olan bir profile denk gelir ve SDK bunu reddeder. Herhangi bir kullanıcı eylemi çağrısından önce identify metodunu await ile bekleyin. Bkz. React Native SDK’da çağrı sırası. |
| unsupportedData | 3007 | Bu hata, veri formatının SDK tarafından desteklenmediğini gösterir. |
| persistingDataError | 3100 | Veri kaydedilirken bir hata oluştu. |
| fetchTimeoutError | 3101 | Bu hata, getirme işleminin zaman aşımına uğradığını gösterir. |
| operationInterrupted | 9000 | Bu işlem sistem tarafından kesintiye uğratıldı. Çağrıyı yeniden deneyin. |
Diğer sorunlar
Henüz bir çözüm bulamadıysanız, sonraki adımlar şunlar olabilir:
- SDK’yı en son sürüme yükseltme: En son SDK sürümleri daha kararlıdır ve bilinen sorunlara yönelik düzeltmeler içerir; bu nedenle her zaman güncellemenizi öneririz.
- Destek ekibiyle iletişime geçin veya diğer geliştiricilerden yardım alın destek forumu üzerinden.
- Destek ekibiyle support@adapty.io adresinden veya sohbet üzerinden iletişime geçin: SDK’yı yükseltmeye hazır değilseniz ya da yükseltme sorunu çözmediyse destek ekibimize başvurun. Ayrıntılı günlük kaydını etkinleştirip ekiple paylaşırsanız sorununuz daha hızlı çözülür. İlgili kod parçacıklarını da ekleyebilirsiniz.