Unity 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, altta yatan bir StoreKit, Play Billing, ağ veya backend hatasını sarar. Ayrıntılı günlükler açıkken (Adapty.SetLogLevel(AdaptyLogLevel.Verbose, ...) — bkz. Günlükleme), sarılmış hata konsola yazdırılır ve bu genellikle gerçek nedeni gösterir.
Bu çözümler sorununuzu gidermezse, destek ekibimizin size daha verimli yardımcı olabilmesi için bize ulaşmadan önce atılacak adımlar için Diğer sorunlar bölümüne bakın.
using AdaptySDK;
Adapty.MakePurchase(product, (result, error) => {
if (error != null && error.Code == AdaptyErrorCode.CantMakePayments) {
// In-app purchases are not allowed on this device
}
});
Kullanıcının iptal ettiği bir satın alma işlemi hata değildir. MakePurchase bunu sonuç üzerinden bildirir: result.Type, AdaptyPurchaseResultType.UserCancelled olur — bkz. Satın alma yapma.
Sistem StoreKit Kodları
| Hata | Kod | Çözüm |
|---|---|---|
| unknown | 0 | Bilinmeyen veya beklenmedik bir hata oluştuğunu gösteren hata kodu. Tekrar deneyin veya Diğer sorunlar bölümüne bakın. |
| clientInvalid | 1 | İstemcinin gerçekleştirmeye çalıştığı işleme izin verilmediğini gösteren hata kodu. |
| paymentCancelled | 2 | Kullanıcının ödeme isteğini iptal ettiğini gösteren 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ırlatma yapabilirsiniz. |
| paymentInvalid | 3 | Ödeme parametrelerinden birinin App Store tarafından tanınmadığını gösteren hata kodu. |
| paymentNotAllowed | 4 | Kullanıcının ödeme yapmasına izin verilmediğini gösteren hata kodu. |
| storeProductNotAvailable | 5 | İstenen ürünün mağazada mevcut olmadığını gösteren hata kodu. Uygulamayı yeniden yüklemeyi deneyin. |
| cloudServicePermissionDenied | 6 | Kullanıcının bulut hizmeti bilgilerine erişime izin vermediğini gösteren hata kodu. |
| cloudServiceNetworkConnectionFailed | 7 | Cihazın ağa bağlanamadığını gösteren hata kodu. |
| cloudServiceRevoked | 8 | Kullanıcının bu bulut hizmetini kullanma iznini iptal ettiğini gösteren hata kodu. |
| privacyAcknowledgementRequired | 9 | Kullanıcının Apple’ın gizlilik politikasını henüz onaylamadığını gösteren hata kodu. |
| unauthorizedRequestData | 10 | Uygulamanın gerekli yetkiye sahip olmadığı bir özelliği kullanmaya çalıştığını gösteren hata kodu. |
| invalidOfferIdentifier | 11 | Teklif İstediğiniz teklifleri AppStore Connect’te ayarladığınızdan ve geçerli bir teklif tanımlayıcısı geçirdiğinizden emin olun. |
| invalidSignature | 12 | Ödeme indirimindeki imzanın geçerli olmadığını gösteren hata kodu. |
| missingOfferParams | 13 | Ödeme indiriminde parametrelerin eksik olduğunu gösteren hata kodu. |
| invalidOfferPrice | 14 | App Store Connect’te belirttiğiniz fiyatın artık geçerli olmadığını gösteren 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 doğru şekilde yapılandırmanız gerekiyor. Nasıl yapılacağını öğrenmek için Unity için ilgili sayfaya bakabilirsiniz. |
| productNotFound | 22 | Bu hata, satın alma işlemi için 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üzeltileceğine dair ayrıntılar için Remote config ile paywall ö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 vermeden ö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 çalıştırılmasından kaynaklanabilir. |
| featureNotSupported | 98 | İstenen özellik, mevcut cihazda Play Store tarafından desteklenmiyor. |
| billingServiceDisconnected | 99 | Bu kritik hata, istemci uygulamasını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ılamadığını gösterir. Çoğu durumda bu, istemci cihaz ile Google Play Billing hizmetleri arasında bir yerde ağ bağlantısı sorunu olduğu anlamına gelir. |
| billingUnavailable | 103 | Bu hata, satın alma işlemi sırasında bir kullanıcı faturalandırma hatasının 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ı kurumsal bir kullanıcı ve kurumsal yöneticisi satın alma yapmayı 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ına giriş yapmamış. |
| developerError | 105 | Bu, bir API’yi hatalı kullandığınızı gösteren kritik bir hatadır. |
| billingError | 106 | Bu, Google Play’in kendi içinde 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 üzerinde istenen işlemin başarısız olduğunu 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 listelenmelerine rağmen satın alma için kullanılamadığını gösterir. Bu hata bazen Bu hatayla karşılaşıyorsanız Code-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 izinli değil. Sorun giderme kılavuzuna bakın. |
| cantReadReceipt | 1005 | Cihazda geçerli bir makbuz yok. Bu, sandbox testleri sırasında sorun yaratabilir. Herhangi bir işlem yapmanız gerekmez; 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 alma başarısız oldu. Bu hata, altta yatan bir StoreKit hatasını sarmalıyor — gerçek nedeni görmek için sarmalanan hatayı okuyun (veya ayrıntılı logları etkinleştirerek konsolda görüntüleyin). Sarmalanan hata genellikle yukarıdaki tablodaki StoreKit kodları 0–14’ten biri olup 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. |
| fetchSubscriptionStatusFailed | 1020 | SDK, abonelik durumunu mağazadan okuyamadı. Çağrıyı yeniden deneyin, ardından Diğer sorunlar bölümüne bakın. |
Özel ağ kodları
| Hata | Kod | Çözüm |
|---|---|---|
| notActivated | 2002 | Adapty SDK etkinleştirilmemiş. En sık, bir açılış ekranı veya erken çalışan bir script hook’u, Adapty.Activate tamamlanmadan önce Adapty metodlarını çağırdığında görülür. Sorun aralıklı olabilir ve düzenleyicide yeniden üretilmeyebilir; çünkü gerçek cihaz zamanlaması farklıdır. Başka herhangi bir SDK çağrısı planlamadan önce Activate’in tamamlanma geri çağrısını bekleyin. Tam sıralama için bkz. Unity SDK’da çağrı sırası. |
| badRequest | 2003 | Hatalı istek. App Store ile entegrasyon için gereken tüm adımları tamamladığınızdan emin olun. |
| serverError | 2004 | Sunucu hatası. Bir süre bekledikten 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 sorunlara işaret eder. VPN’i devre dışı bırakmayı veya hücresel ağdan WiFi’ye geçmeyi ya da tersini deneyin. |
| decodingFailed | 2006 | Bu hata, yanıt çözümlemesinin başarısız olduğunu gösterir. Kodunuzu inceleyin 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österir. |
| analyticsDisabled | 3000 | Devre dışı bıraktığınız için analitik etkinliklerini işleyemiyoruz. |
| wrongParam | 3001 | Bu hata, parametrelerden bazılarının doğru olmadığını gösterir. Adapty paywall builder kullanıyor 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 çağrılamaz. |
| profileWasChanged | 3006 | İşlem sırasında kullanıcı profili değiştirildi. Bu durum, Adapty.Identify henüz tamamlanmamışken bir metot çağrıldığında yaşanır; 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ı yapmadan önce Identify tamamlanma geri çağrısını bekleyin. Bkz. Unity SDK’da çağrı sırası. |
| unsupportedData | 3007 | Bu hata, veri formatının SDK tarafından desteklenmediğini gösterir. |
| 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, deneyebileceğiniz sonraki adımlar şunlardır:
- SDK’yı en son sürüme yükseltin: En son SDK sürümleri daha kararlı olduğundan ve bilinen sorunlara yönelik düzeltmeler içerdiğinden, her zaman güncellemenizi öneririz.
- Destek ekibiyle iletişime geçin veya diğer geliştiricilerden yardım alın: Destek forumundan diğer geliştiricilerle iletişime geçebilirsiniz.
- Destek ekibiyle support@adapty.io adresinden veya sohbet üzerinden iletişime geçin: SDK’yı yükseltmeye hazır değilseniz veya bu işlem sorunu çözmediyse destek ekibimize başvurun. 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.