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ı

HataKodÇözüm
unknown0Bilinmeyen veya beklenmedik bir hata oluştuğunu belirten hata kodu.
Yeniden deneyin veya Diğer sorunlar bölümüne bakın.
clientInvalid1İstemcinin gerçekleştirmeye çalıştığı işleme izin verilmediğini belirten hata kodu.
paymentCancelled2

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.

paymentInvalid3Ödeme parametrelerinden birinin App Store tarafından tanınmadığını belirten hata kodu.
paymentNotAllowed4Kullanıcının ödeme yapmaya yetkili olmadığını belirten hata kodu.
storeProductNotAvailable5İstenen ürünün mağazada mevcut olmadığını belirten hata kodu.
Uygulamayı yeniden yüklemeyi deneyin.
cloudServicePermissionDenied6Kullanıcının bulut hizmeti bilgilerine erişime izin vermediğini belirten hata kodu.
cloudServiceNetworkConnectionFailed7Cihazın ağa bağlanamadığını belirten hata kodu.
cloudServiceRevoked8Kullanıcının bu bulut hizmetini kullanma iznini iptal ettiğini belirten hata kodu.
privacyAcknowledgementRequired9Kullanıcının Apple’ın gizlilik politikasını henüz onaylamadığını belirten hata kodu.
unauthorizedRequestData10Uygulamanın gerekli yetkiye sahip olmadığı bir özelliği kullanmaya çalıştığını belirten hata kodu.
invalidOfferIdentifier11

identifier teklif kimliği geçerli değil. Örneğin, App Store’da bu kimlikle bir teklif oluşturmamış ya da teklifi iptal etmiş olabilirsiniz.

İstediğiniz teklifleri AppStore Connect’te oluşturduğunuzdan ve geçerli bir teklif kimliği ilettiğinizden emin olun.

invalidSignature12Ödeme indirimindeki imzanın geçerli olmadığını belirten hata kodu.
missingOfferParams13Ödeme indiriminde parametrelerin eksik olduğunu belirten hata kodu.
invalidOfferPrice14App 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ı

HataKodÇözüm
adaptyNotInitialized20Adapty 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 bakın.
productNotFound22Bu hata, satın alınmak istenen ürünün mağazada mevcut olmadığını gösterir.
invalidJson23Paywall JSON geçerli değil. Adapty Kontrol Paneli’nde düzeltin. Nasıl düzeltileceğine dair ayrıntılar için Paywall’u remote config ile özelleştirme konusuna bakın.
currentSubscriptionToUpdateNotFoundInHistory24Yenilenmesi gereken orijinal abonelik geçmişte bulunamadı.
pendingPurchase25Bu hata, satın alma durumunun tamamlandı yerine beklemede olduğunu gösterir. Ayrıntılar için Android Geliştirici belgelerindeki Bekleyen işlemlerin yönetimi sayfasına bakın.
billingServiceTimeout97Bu 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 işlemin gecikmesiyle oluşabilir.
featureNotSupported98İstenen özellik, mevcut cihazda Play Store tarafından desteklenmiyor.
billingServiceDisconnected99Bu kritik hata, istemci uygulamasının BillingClient aracılığıyla Google Play Store hizmetiyle bağlantısının kesildiğini gösterir.
billingServiceUnavailable102Bu 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.
billingUnavailable103

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 bulunuyor.

3. Kullanıcı bir kurumsal kullanıcı ve kurumun 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ış.

developerError105Bu, bir API’yi hatalı kullandığınızı gösteren kritik bir hatadır.
billingError106Bu, Google Play’in kendisinde dahili bir sorun olduğunu gösteren kritik bir hatadır.
itemAlreadyOwned107Consumable ürün zaten satın alınmış.
itemNotOwned108Bu hata, öğe üzerinde istenen işlemin başarısız olduğunu gösterir.

Özel StoreKit kodları

HataKodÇözüm
noProductIDsFound1000

Bu hata, paywall’da satın alma için istediğiniz ürünlerin App Store’da listelenmiş olmasına rağmen hiçbirinin satın alınamaz durumda olduğunu gösterir. Bu hata zaman zaman InvalidProductIdentifiers uyarısıyla birlikte gelebilir. Uyarı hatasız görünüyorsa görmezden gelin.

Bu hatayla karşılaşıyorsanız Kod-1000 noProductIDsFound hatasının düzeltmesi bölümündeki adımları izleyin.

noProductsFound1001Bu hata, satın alma için istenen ürünün mağazada mevcut olmadığını gösterir.
productRequestFailed1002Mevcut ürünler şu anda alınamıyor.
cantMakePayments1003Bu cihazda uygulama içi satın almalar izin verilmiyor. Sorun giderme kılavuzuna bakın.
noPurchasesToRestore1004Bu hata, App Store’un geri yüklenecek satın almayı bulamadığını gösterir.
cantReadReceipt1005

Cihazda geçerli bir makbuz bulunmuyor. Bu durum sandbox testleri sırasında sorun oluşturabilir.

Sandbox ortamında gerçek bir satın alma yapana kadar geçerli bir makbuz dosyasına sahip olmayacaksınız; bu nedenle erişmeden önce en az bir satın alma yapın. Sandbox testleri sırasında ayrıca cihazda geçerli bir Apple sandbox hesabıyla oturum açtığınızdan emin olun.

productPurchaseFailed1006Ürün satın alma başarısız oldu. Bu hata, 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 0–14 aralığındaki StoreKit 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; hâlâ başarısız oluyorsa Apple desteğiyle iletişime geçin.
missingOfferSigningParams1007

Bu hata, Adapty entegrasyonuyla veya tekliflerle ilgili sorunlara işaret ediyor.

Kurulum hakkında ayrıntılı bilgi için App Store entegrasyonunu yapılandırma ve Teklifler sayfalarına bakın.

refreshReceiptFailed1010Bu hata, makbuzun alınamadığını gösterir. Yalnızca StoreKit 1 için geçerlidir.
receiveRestoredTransactionsFailed1011Satın alma geri yükleme başarısız oldu.

Özel ağ kodları

HataKodÇözüm
notActivated2002Adapty SDK etkinleştirilmemiş.
Genellikle bir splash ekranı veya erken UI kancası, Adapty().activate tamamlanmadan önce Adapty metodlarını çağırdığında görülür. Bu belirti aralıklıdır ve gerçek cihaz zamanlaması farklı olduğundan emülatörde yeniden üretilemeyebilir. Diğer SDK çağrılarını planlamadan önce activate Future’ını await ile bekleyin. Tam sıralaması için Flutter SDK’da çağrı sırası sayfasına bakın.
badRequest2003Hatalı istek.
App Store ile entegrasyon için gereken tüm adımları tamamladığınızdan emin olun.
serverError2004Sunucu hatası.
Bir süre sonra tekrar deneyin. Sorun devam ederse Adapty destek ekibiyle iletişime geçin.
networkFailed2005Bu 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 tam tersine geçmeyi deneyin.
decodingFailed2006Bu hata, yanıt kod çözümünün 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.
encodingFailed2009Bu hata, istek kodlamasının başarısız olduğunu gösterir.
analyticsDisabled3000Belirli bir müşteri için analytics’i devre dışı bıraktığınızdan analytics olaylarını işleyemiyoruz.
wrongParam3001Bu hata, bazı parametrelerinizin doğru olmadığını gösterir.
Adapty paywall builder kullanıyorsanız ve bu hata nedeniyle paywall görüntüleyemiyorsanız, paywall builder’da Show on device seçeneğini açın.
Bu sorunun 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.
activateOnceError3005.activate metodu birden fazla kez çağrılamaz.
profileWasChanged3006İşlem sırasında kullanıcı profili değiştirildi.
Bu durum, Adapty().identify hâlâ çalışırken bir metot çağrıldığında yaşanır; çalışmakta olan çağrı, henüz değiştirilmek üzere olan bir profile ulaşır ve SDK bunu reddeder. Kullanıcı eylemlerine ait çağrılardan önce her zaman identify’ı await ile bekleyin. Bkz. Flutter SDK’da çağrı sırası.
unsupportedData3007Bu hata, veri formatının SDK tarafından desteklenmediğini gösterir.
persistingDataError3100Veri kaydedilirken bir hata oluştu.
fetchTimeoutError3101Bu hata, fetch işleminin zaman aşımına uğradığını gösterir.

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.