iOS SDK'da hataları ele alma

Adapty SDK, tüm hata türleri için AdaptyError adında kendi sarmalayıcısına sahiptir. Temel olarak SDK’dan dönen her hata bir AdaptyError’dır. Bu hatanın iki kullanışlı özelliği vardır: originalError ve adaptyErrorCode. Aşağıda bunlar açıklanmaktadır. originalError, orijinal hatayla çalışmanız gerektiğinde kullanabileceğiniz orijinal hatayı içerir. SKError, NSError veya genel bir Swift Error olabilir. Bu özellik isteğe bağlıdır; çünkü bazı hatalar tutarsız veya eksik veriler gibi durumlarda doğrudan SDK tarafından üretilebilir ve etrafında wrapper oluşturulan orijinal bir hata bulunmayabilir.

adaptyErrorCode, aşağıdaki gibi yaygın sorunları ele almak için kullanılabilir:

  • geçersiz kimlik bilgileri
  • ağ hataları
  • iptal edilen ödemeler
  • faturalama sorunları
  • geçersiz makbuz
  • ve çok daha fazlası

Hatayı belirli kodlara göre kontrol etmek ve buna göre tepki vermek oldukça kolaydır.

do {
    let info = try await Adapty.makePurchase(product: product)
} catch {
    if error.adaptyErrorCode == .paymentCancelled {
        // purchase was cancelled
        // you can offer discount to your user or remind them later
    }
}

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.

StoreKit hataları

HataKodÇözüm
unknown0Bilinmeyen veya beklenmeyen bir hata oluştuğunu belirten hata kodu.
Yeniden deneyin veya Diğer sorunlar bölümüne bakın.
clientInvalid1İstemcinin denediği işlemi gerçekleştirmesine 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ız gerekmez; ancak iş mantığı açısından kullanıcıya indirim teklif edebilir veya daha sonra hatırlatabilirsiniz.

paymentInvalid3Ödeme parametrelerinden birinin App Store tarafından tanınmadığını belirten hata kodu.
paymentNotAllowed4Kullanıcının ödeme yetkilendirmesine izin verilmediğini 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 Cloud servis bilgilerine erişime izin vermediğini belirten hata kodu.
cloudServiceNetworkConnectionFailed7Cihazın ağa bağlanamadığını belirten hata kodu.
cloudServiceRevoked8Kullanıcının bu cloud servisini kullanma iznini iptal ettiğini belirten hata kodu.
privacyAcknowledgementRequired9Kullanıcının henüz Apple’ın gizlilik politikasını onaylamadığını belirten hata kodu.
unauthorizedRequestData10Uygulamanın gerekli yetkiye sahip olmadığı bir özelliği kullanmaya çalıştığını belirten hata kodu.
invalidOfferIdentifier11

identifier teklifi geçerli değil. Örneğin, App Store’da bu tanımlayıcıya sahip bir teklif oluşturmamış veya teklifi iptal etmiş olabilirsiniz.

İstediğiniz teklifleri AppStore Connect’te oluşturduğunuzdan ve geçerli bir teklif tanımlayıcısı geçirdiğ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.
noProductIDsFound1000

Paywall’da istediğiniz ürünlerin hiçbirinin App Store’da listelenmesine rağmen satın alınabilir durumda olmadığını belirten hata. Bu hata bazen 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ı için düzeltme bölümündeki adımları izleyin.

productRequestFailed1002Şu anda mevcut ürünler alınamıyor.
cantMakePayments1003Bu cihazda uygulama içi satın almalara izin verilmiyor. Sorun giderme kılavuzuna bakın.
cantReadReceipt1005

Cihazda geçerli bir makbuz mevcut değil. Bu durum sandbox testleri sırasında sorun yaratabilir.

Sandbox ortamında, bir satın alma gerçekleştirmeden geçerli bir makbuz dosyanız olmaz; bu nedenle makbuza erişmeden önce mutlaka bir satın alma yapın. Sandbox testleri sırasında cihazda geçerli bir Apple sandbox hesabıyla oturum açtığınızdan da emin olun.

productPurchaseFailed1006Ürün satın alma işlemi başarısız oldu. Bu, Adapty ile ilgisi olmayan bir StoreKit hatasıdır. Yeni bir sandbox profili kullanmayı deneyin. Sorun devam ederse Apple desteğine başvurun.
refreshReceiptFailed1010Makbuz yenileme işlemi başarısız oldu.
fetchSubscriptionStatusFailed1020App Store’dan abonelik durumu alınamadı.
unknownTransactionId1030İşlem tanımlayıcısı bilinmiyor.
paymentPendingError1050Ödeme şu anda beklemede.

Ağ hataları

HataKodÇözüm
notActivated2002Adapty SDK etkinleştirilmemiş. SDK’yı Adapty.activate metodunu kullanarak düzgün şekilde yapılandırmanız gerekiyor.
badRequest2003Geçersiz istek.
App Store entegrasyonu 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 bir soruna işaret ediyor.
VPN’i devre dışı bırakmayı ya da hücresel ağdan WiFi’ye (veya tersine) geçmeyi deneyin.
decodingFailed2006Bu hata, yanıt çözümlemesinin başarısız olduğunu gösteriyor.
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ıza işaret edebilir.
encodingFailed2009Bu hata, istek kodlamasının başarısız olduğunu gösteriyor.

Genel hatalar

HataKodÇözüm
analyticsDisabled3000Analitik olayları işleyemiyoruz; bu özelliği devre dışı bırakmışsınız.
wrongParam3001Bu hata, bazı parametrelerinizin hatalı olduğunu 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.
Bir diğer olası neden, 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 hata, identify çağrısının ardından tamamlanmadan başka bir metot çağırdığınızda ortaya çıkabilir. Bunu önlemek için diğer metotları çağırmadan önce identify işleminin tamamlanmasını bekleyin.
unsupportedData3007Bu hata, veri formatının SDK tarafından desteklenmediğini gösterir.
unidentifiedUserLogout3020Kimliği doğrulanmamış bir kullanıcı için logout metodu çağrılamaz.
fetchTimeoutError3101Bu hata, fetch işleminin zaman aşımına uğradığını gösterir.
operationInterrupted9000Bu işlem sistem tarafından kesintiye uğratıldı.

Diğer sorunlar

Henüz bir çözüm bulamadıysanız, sonraki adımlar şunlar olabilir:

  • SDK’yı en son sürüme yükseltin: Daha kararlı olduğu ve bilinen sorunlara yönelik düzeltmeler içerdiği için her zaman en güncel SDK sürümüne geçmenizi öneririz.
  • Destek ekibiyle iletişime geçin veya diğer geliştiricilerden yardım alın destek forumunda.
  • Destek ekibiyle [email protected] adresinden veya sohbet üzerinden iletişime geçin: SDK’yı yükseltmeye hazır değilseniz ya da yükseltme 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.