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ı
| Hata | Kod | Çözüm |
|---|---|---|
| unknown | 0 | Bilinmeyen veya beklenmeyen bir hata oluştuğunu belirten hata kodu. Yeniden deneyin veya Diğer sorunlar bölümüne bakın. |
| clientInvalid | 1 | İstemcinin denediği 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 veya 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 yetkilendirmesine izin verilmediğini 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 Cloud servis 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 cloud servisini kullanma iznini iptal ettiğini belirten hata kodu. |
| privacyAcknowledgementRequired | 9 | Kullanıcının henüz Apple’ın gizlilik politikasını 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 tanımlayıcısı geçirdiğ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. |
| noProductIDsFound | 1000 | 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 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 almalara izin verilmiyor. Sorun giderme kılavuzuna bakın. |
| cantReadReceipt | 1005 | 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. |
| productPurchaseFailed | 1006 | Ü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. |
| refreshReceiptFailed | 1010 | Makbuz yenileme işlemi başarısız oldu. |
| fetchSubscriptionStatusFailed | 1020 | App Store’dan abonelik durumu alınamadı. |
| unknownTransactionId | 1030 | İşlem tanımlayıcısı bilinmiyor. |
| paymentPendingError | 1050 | Ödeme şu anda beklemede. |
Ağ hataları
| Hata | Kod | Çözüm |
|---|---|---|
| notActivated | 2002 | Adapty SDK etkinleştirilmemiş. SDK’yı Adapty.activate metodunu kullanarak düzgün şekilde yapılandırmanız gerekiyor. |
| badRequest | 2003 | Geçersiz istek. App Store entegrasyonu için gereken tüm adımları tamamladığınızdan emin olun. |
| serverError | 2004 | Sunucu hatası. Bir süre sonra tekrar deneyin. Sorun devam ederse Adapty destek ekibiyle iletişime geçin. |
| networkFailed | 2005 | Bu 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. |
| decodingFailed | 2006 | Bu 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. |
| encodingFailed | 2009 | Bu hata, istek kodlamasının başarısız olduğunu gösteriyor. |
Genel hatalar
| Hata | Kod | Çözüm |
|---|---|---|
| analyticsDisabled | 3000 | Analitik olayları işleyemiyoruz; bu özelliği devre dışı bırakmışsınız. |
| wrongParam | 3001 | Bu 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. |
| activateOnceError | 3005 | .activate metodu birden fazla kez çağrılamaz. |
| profileWasChanged | 3006 | İş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. |
| unsupportedData | 3007 | Bu hata, veri formatının SDK tarafından desteklenmediğini gösterir. |
| unidentifiedUserLogout | 3020 | Kimliği doğrulanmamış bir kullanıcı için logout metodu çağrılamaz. |
| fetchTimeoutError | 3101 | Bu hata, fetch işleminin zaman aşımına uğradığını gösterir. |
| operationInterrupted | 9000 | Bu 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.