AdaptyError.code, bir sayı değil AdaptyErrorCode enum değeridir; bu nedenle sayısal kodla değil, enum sabitiyle karşılaştırın. Aşağıdaki sayılar yalnızca bir log satırında veya destek talebinde genellikle bu şekilde göründükleri için verilmiştir.
Hata kodu
Numara
Açıklama
Çözüm
AdaptyErrorCode.NO_PRODUCT_IDS_FOUND
1000
Paywall’daki ürünlerin hiçbiri mağazada mevcut değil.
Adapty.getPaywall("main") { result -> when (result) { is AdaptyResult.Success -> { val paywall = result.value // Use paywall } is AdaptyResult.Error -> { val error = result.error when (error.code) { AdaptyErrorCode.NETWORK_FAILED -> { // Network error - show offline message showOfflineMessage() } else -> { // Other errors showErrorMessage(error.message) } } } }}
Adapty.getPaywall("main", result -> { if (result instanceof AdaptyResult.Success) { AdaptyPaywall paywall = ((AdaptyResult.Success<AdaptyPaywall>) result).getValue(); // Paywallı kullan } else if (result instanceof AdaptyResult.Error) { AdaptyError error = ((AdaptyResult.Error) result).getError(); switch (error.getCode()) { case NETWORK_FAILED: // Ağ hatası - çevrimdışı mesajını göster showOfflineMessage(); break; default: // Diğer hatalar showErrorMessage(error.getMessage()); break; } }});
Satın alma hataları
product.makePurchase { result -> when (result) { is AdaptyResult.Success -> { val purchase = result.value // Purchase successful showSuccessMessage() } is AdaptyResult.Error -> { val error = result.error when (error.code) { AdaptyErrorCode.CANT_MAKE_PAYMENTS -> { // Can't make payments showPaymentNotAvailableMessage() } AdaptyErrorCode.PRODUCT_NOT_FOUND -> { // Product not available showProductNotAvailableMessage() } else -> { // Other purchase errors showPurchaseErrorMessage(error.message) } } } }}
product.makePurchase(result -> { if (result instanceof AdaptyResult.Success) { AdaptyPurchase purchase = ((AdaptyResult.Success<AdaptyPurchase>) result).getValue(); // Satın alma başarılı showSuccessMessage(); } else if (result instanceof AdaptyResult.Error) { AdaptyError error = ((AdaptyResult.Error) result).getError(); switch (error.getCode()) { case CANT_MAKE_PAYMENTS: // Ödeme yapılamıyor showPaymentNotAvailableMessage(); break; case PRODUCT_NOT_FOUND: // Ürün mevcut değil showProductNotAvailableMessage(); break; default: // Diğer satın alma hataları showPurchaseErrorMessage(error.getMessage()); break; } }});
Hata kurtarma stratejileri
Ağ hatalarında yeniden deneme
fun getPaywallWithRetry(placementId: String, maxRetries: Int = 3) { var retryCount = 0 fun attemptGetPaywall() { Adapty.getPaywall(placementId) { result -> when (result) { is AdaptyResult.Success -> { val paywall = result.value // Use paywall } is AdaptyResult.Error -> { val error = result.error if (error.code == AdaptyErrorCode.NETWORK_FAILED && retryCount < maxRetries) { // Network error - retry retryCount++ Handler(Looper.getMainLooper()).postDelayed({ attemptGetPaywall() }, 1000 * retryCount) // Exponential backoff } else { // Max retries reached or other error showErrorMessage(error.message) } } } } } attemptGetPaywall()}
public void getPaywallWithRetry(String placementId, int maxRetries) { AtomicInteger retryCount = new AtomicInteger(0); Runnable attemptGetPaywall = new Runnable() { @Override public void run() { Adapty.getPaywall(placementId, result -> { if (result instanceof AdaptyResult.Success) { AdaptyPaywall paywall = ((AdaptyResult.Success<AdaptyPaywall>) result).getValue(); // Use paywall } else if (result instanceof AdaptyResult.Error) { AdaptyError error = ((AdaptyResult.Error) result).getError(); if (error.getCode() == AdaptyErrorCode.NETWORK_FAILED && retryCount.get() < maxRetries) { // Network error - retry retryCount.incrementAndGet(); new Handler(Looper.getMainLooper()).postDelayed(this, 1000 * retryCount.get()); } else { // Max retries reached or other error showErrorMessage(error.getMessage()); } } }); } }; attemptGetPaywall.run();}
Önbelleğe alınan verilere geri dönüş
class PaywallManager { private var cachedPaywall: AdaptyPaywall? = null fun getPaywall(placementId: String) { Adapty.getPaywall(placementId) { result -> when (result) { is AdaptyResult.Success -> { val paywall = result.value cachedPaywall = paywall showPaywall(paywall) } is AdaptyResult.Error -> { val error = result.error if (error.code == AdaptyErrorCode.NETWORK_FAILED && cachedPaywall != null) { // Ağ hatası - önbelleğe alınmış paywallı kullan showPaywall(cachedPaywall!!) showOfflineIndicator() } else { // Önbellek yok veya başka bir hata showErrorMessage(error.message) } } } } }}
public class PaywallManager { private AdaptyPaywall cachedPaywall; public void getPaywall(String placementId) { Adapty.getPaywall(placementId, result -> { if (result instanceof AdaptyResult.Success) { AdaptyPaywall paywall = ((AdaptyResult.Success<AdaptyPaywall>) result).getValue(); cachedPaywall = paywall; showPaywall(paywall); } else if (result instanceof AdaptyResult.Error) { AdaptyError error = ((AdaptyResult.Error) result).getError(); if (error.getCode() == AdaptyErrorCode.NETWORK_FAILED && cachedPaywall != null) { // Ağ hatası - önbelleğe alınmış paywall'ı kullan showPaywall(cachedPaywall); showOfflineIndicator(); } else { // Önbellek yok veya başka bir hata showErrorMessage(error.getMessage()); } } }); }}