Flutter SDK'da hataları yönetme
SDK tarafından döndürülen her hata AdaptyErrorCode türündedir. İşte bir örnek:
Hata ayıklamadan önce ayrıntılı günlükleri etkinleştirin. Çoğu AdaptyError, temelinde bir StoreKit, Play Billing, ağ veya backend hatası barındırır. Ayrıntılı günlükler açıkken (await Adapty().setLogLevel(AdaptyLogLevel.verbose) — bkz. Loglama), sarmalanmış hata konsola yazdırılır ve genellikle asıl nedeni ortaya koyar.
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; böylece size daha verimli yardım sunabiliriz.
try {
final result = await adapty.makePurchase(product: product);
} on AdaptyError catch (adaptyError) {
if (adaptyError.code == AdaptyErrorCode.paymentCancelled) {
// Cancelled
}
} catch (e) {
}
System 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 gerçekleştirmeye çalıştığı işleme 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ıza gerek yok; 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 teklifleri AppStore Connect’te oluşturduğunuzdan ve geçerli bir teklif kimliği ilettiğinizden 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 şekilde yapılandırmanız gerekiyor. Nasıl yapılacağını öğrenmek için Flutter için konusuna bakabilirsiniz. |
| productNotFound | 22 | Bu hata, satın alınmak istenen ürünün mağazada mevcut olmadığını gösterir. |
| invalidJson | 23 | Paywall JSON’ı geçerli değil. Adapty Kontrol Paneli’nde düzeltin. Nasıl düzelteceğinizi öğrenmek için Paywall’u remote config ile özelleştirme konusuna bakın. |
| currentSubscriptionToUpdateNotFoundInHistory | 24 | Yenilenmesi gereken orijinal abonelik geçmişte bulunamadı. |
| pendingPurchase | 25 | Bu hata, satın alma durumunun tamamlandı yerine beklemede olduğunu gösterir. Ayrıntılar için Android Geliştirici belgelerindeki Bekleyen işlemleri yönetme sayfasına bakın. |
| billingServiceTimeout | 97 | Bu hata, Google Play yanıt veremeden önce isteğin maksimum zaman aşımına ulaştığını gösterir. Bu durum, örneğin Play Billing Library çağrısının istediği eylemin gecikmeli yürütülmesinden kaynaklanabilir. |
| 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 kurduğu bağlantının kesildiğini gösterir. |
| billingServiceUnavailable | 102 | Bu geçici hata, Google Play Billing hizmetinin şu anda kullanılamaz durumda olduğunu 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 sürecinde kullanıcı kaynaklı bir faturalandırma hatası oluştuğunu gösterir. Bu durumun yaşanabileceği örnekler ş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 hesap kullanıcısı ve kurumsal yöneticisi satın alma işlemlerini devre dışı bırakmış. 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 kendi iç sorununu gösteren kritik bir hatadır. |
| itemAlreadyOwned | 107 | Consumable ürün zaten satın alınmış. |
| itemNotOwned | 108 | Bu hata, öğe üzerinde istenen işlemin başarısız olduğunu gösterir sin |
Özel StoreKit kodları
| Hata | Kod | Çözüm |
|---|---|---|
| noProductIDsFound | 1000 | Bu hata, paywallde talep ettiğiniz ürünlerin App Store’da listelenmiş olmalarına rağmen satın alma için mevcut 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. |
| cantMakePayments | 1003 | Bu cihazda uygulama içi satın almalar izinli değil. Sorun giderme kılavuzuna bakın. |
| noPurchasesToRestore | 1004 | Adapty Flutter SDK 4.0.4 sürümünde kullanımdan kaldırıldı: restorePurchases() artık bu hatayı döndürmüyor. Geri yüklenecek bir şey olmadığında, metod mevcut profille başarılı şekilde tamamlanır; bu nedenle profildeki 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 testleri sırasında sorun yaratabilir. Sandbox ortamında gerçek bir satın alma yapmadan geçerli bir makbuz dosyanız olmaz; bu nedenle makbuza erişmeden önce bir satın alma yaptığınızdan emin olun. Sandbox testleri sırasında cihazda geçerli bir Apple sandbox hesabıyla giriş yaptığınızdan da emin olun. |
| productPurchaseFailed | 1006 | Ürün satın alımı başarısız oldu. Bu hata, altta yatan bir StoreKit hatasını sarmalıyor; gerçek nedeni görmek için sarmalanmış hatayı okuyun (veya konsolda görmek için ayrıntılı logları etkinleştirin). Sarmalanmış hata genellikle yukarıdaki tablodaki StoreKit kodlarından 0–14 arasındadır; en sık paymentCancelled, paymentInvalid, paymentNotAllowed veya invalidOfferPrice görülür. Belirli bir neden tespit edemiyorsanız yeni bir sandbox profili deneyin; hâlâ başarısız oluyorsa 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ükleme başarısız oldu. |
Özel ağ kodları
| Hata | Kod | Çözüm |
|---|---|---|
| notActivated | 2002 | Adapty SDK etkinleştirilmemiş. Çoğunlukla bir splash screen veya erken UI hook’u, Adapty().activate tamamlanmadan Adapty metodlarını çağırdığında görülür. Belirti aralıklıdır ve emülatörde gerçek cihaz zamanlaması farklı olduğundan yeniden üretilemeyebilir. Başka herhangi bir SDK çağrısı planlamadan önce activate Future’ını await edin. Tam sıra için bkz. Flutter SDK’da çağrı sırası. |
| badRequest | 2003 | Geçersiz istek. App Store ile entegrasyon için gerekli 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 hücresel ağdan WiFi’ye ya da tersine geçmeyi deneyin. |
| decodingFailed | 2006 | Bu hata, yanıt çözümlemesinin 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 olaylarını işleyemiyoruz. |
| wrongParam | 3001 | Bu hata, bazı parametrelerinizin doğru olmadığını gösterir. Adapty paywall builder kullanıyorsanız ve bu hata nedeniyle paywall gösteremiyorsanız, paywall builder’da Show on device seçeneğini etkinleştirin. Bu sorunun başka bir 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 metodunu birden fazla kez çağırmak mümkün değildir. |
| profileWasChanged | 3006 | İşlem sırasında kullanıcı profili değiştirildi. Bu durum, Adapty().identify hâlâ devam ederken bir metot çağrıldığında meydana gelir — devam eden çağrı, değiştirilmek üzere olan bir profile düşer ve SDK bunu reddeder. Herhangi bir kullanıcı eylemi çağrısından önce her zaman identify’ı await edin. Bkz. Flutter SDK’da çağrı sırası. |
| unsupportedData | 3007 | Bu hata, veri biçiminin SDK tarafından desteklenmediğini gösterir. |
| fetchTimeoutError | 3101 | Bu hata, getirme işleminin zaman aşımına uğradığını gösterir. |
Özel Kullanıcı Arayüzü ve Eklenti Kodları
| Hata | Kod | Çözüm |
|---|---|---|
| jsException | 4105 | Builder ile oluşturulan bir paywall veya onboarding çalışırken JavaScript’ten bir istisna fırlatıldı. Temel JavaScript hatasını görmek için ayrıntılı günlüğü etkinleştirin. |
| operationInterrupted | 9000 | Bu işlem sistem tarafından kesintiye uğratıldı. Çağrıyı yeniden deneyin. |
| emptyResult | 10001 | Flutter eklentisi, yerel SDK’dan boş bir sonuç aldı. Çağrıyı yeniden deneyin; ardından Diğer sorunlar bölümüne bakın. |
| internalPluginError | 10002 | Flutter eklentisinde dahili bir hata oluştu. Diğer sorunlar bölümüne bakın. |
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ümlerine yükseltmenizi her zaman öneririz; bu sürümler daha kararlıdır ve bilinen sorunlar için düzeltmeler içerir.
- Destek ekibiyle iletişime geçin veya diğer geliştiricilerden yardım alın destek forumunda.
- Destek ekibiyle support@adapty.io adresinden veya sohbet yoluyla iletişime geçin: SDK’yı yükseltmeye hazır değilseniz veya bu işlem sorunu çözmediyse destek ekibimizle iletişime geçin. Ayrıntılı günlük kaydını etkinleştirip günlükleri ekiple paylaşırsanız sorununuz daha hızlı çözülecektir. İlgili kod parçacıklarını da ekleyebilirsiniz.