Meine Android -App integriert die Revenuecat SDK V8.3.1 und bietet Benutzern mehrere Abonnementstufen an. Der Fehler im Titel geschieht für einige Benutzer. Soweit ich erkannte, gibt es zwei Benutzer unter Tausenden von Benutzern. (Es ist in der Produktionsumgebung und nicht in Problemen des Testbenutzer der angegebenen Argumente sind ungültig. />
fun selectSubscriptionPlan(activity: Activity, product: StoreProduct) {
if (uiState.value.isPurchasing) return
viewModelScope.launch {
if (Purchases.sharedInstance.isAnonymous) {
// Block to purchase if the signing-in to RevenueCat has never succeeded even at this point.
_effect.emit(Effect.DisplayErrorMessage(activity.getString(R.string.message_anonymous_user)))
return@launch
}
FirebaseCrashlytics.getInstance().log("Activity: $activity")
FirebaseCrashlytics.getInstance().log("Product to purchase: $product")
try {
val params = PurchaseParams.Builder(activity, product)
// To ensure the uiState.value.activeSubscriptionProduct is up to date.
fetchCustomerInfo()
uiState.value.activeSubscriptionProduct?.let { currentSubscription ->
FirebaseCrashlytics.getInstance()
.log("Current subscription: $currentSubscription")
if (product != currentSubscription) {
val currentProductId = currentSubscription.id.split(":").first()
val newProductId = product.id.split(":").first()
val isCrossGrade = currentProductId == newProductId
val isUpgrade =
pricePerYear(product) > pricePerYear(currentSubscription)
val replacementMode = if (isCrossGrade) {
GoogleReplacementMode.WITHOUT_PRORATION
} else if (isUpgrade) {
GoogleReplacementMode.CHARGE_PRORATED_PRICE
} else {
GoogleReplacementMode.DEFERRED
}
params.googleReplacementMode(replacementMode)
params.oldProductId(currentProductId)
FirebaseCrashlytics.getInstance()
.log("Parameters: currentProductId=$currentProductId, newProductId=$newProductId, isCrossGrade=$isCrossGrade, isUpgrade=$isUpgrade, replacementMode=$replacementMode")
}
}
_uiState.value = uiState.value.copy(isPurchasing = true)
val result = Purchases.sharedInstance.awaitPurchase(params.build())
FirebaseCrashlytics.getInstance().log("Result: $result")
if (result.customerInfo.activeSubscriptions.contains(product.id)) {
_effect.emit(Effect.DisplaySuccessMessage(message = activity.getString(R.string.message_purchase_succeeded)))
updateSubscriptionStatus(isSubscribed = true)
fetchCustomerInfo()
}
} catch (e: PurchasesTransactionException) {
if (!e.userCancelled) {
_effect.emit(Effect.DisplayErrorMessage(e.message))
}
FirebaseCrashlytics.getInstance().recordException(e)
} finally {
_uiState.value = uiState.value.copy(isPurchasing = false)
}
}
}
< /code>
Ich kann beobachten, dass das Protokoll, das ich in Crashlytics einfügt, wenn der Fehler auftrittParameters: currentProductId=airfriend_pro, newProductId=airfriend_mega, isCrossGrade=false, isUpgrade=true, replacementMode=CHARGE_PRORATED_PRICE
Ich bitte den Benutzer auch zu 1) Überprüfen bleibt.
Non-fatal Exception: com.revenuecat.purchases.PurchasesTransactionException: One or more of the arguments provided are invalid.
at com.revenuecat.purchases.CoroutinesExtensionsCommonKt$awaitPurchase$2$2.invoke(CoroutinesExtensionsCommon.kt:60)
at com.revenuecat.purchases.CoroutinesExtensionsCommonKt$awaitPurchase$2$2.invoke(CoroutinesExtensionsCommon.kt:55)
at com.revenuecat.purchases.ListenerConversionsCommonKt$purchaseCompletedCallback$1.onError(ListenerConversionsCommon.kt:22)
at com.revenuecat.purchases.PurchasesOrchestrator$dispatch$1.invoke(PurchasesOrchestrator.kt:944)
at com.revenuecat.purchases.PurchasesOrchestrator$dispatch$1.invoke(PurchasesOrchestrator.kt:943)
at com.revenuecat.purchases.PurchasesOrchestrator.dispatch$lambda$17(PurchasesOrchestrator.kt:845)
at androidx.appcompat.widget.TooltipCompatHandler$$ExternalSyntheticLambda0.run(R8$$SyntheticClass:9)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:9063)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:588)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Meine Android -App integriert die Revenuecat SDK V8.3.1 und bietet Benutzern mehrere Abonnementstufen an. Der Fehler im Titel geschieht für einige Benutzer. Soweit ich erkannte, gibt es zwei Benutzer unter Tausenden von Benutzern. (Es ist in der Produktionsumgebung und nicht in Problemen des Testbenutzer der angegebenen Argumente sind ungültig. /> [code]fun selectSubscriptionPlan(activity: Activity, product: StoreProduct) { if (uiState.value.isPurchasing) return
viewModelScope.launch { if (Purchases.sharedInstance.isAnonymous) { // Block to purchase if the signing-in to RevenueCat has never succeeded even at this point. _effect.emit(Effect.DisplayErrorMessage(activity.getString(R.string.message_anonymous_user))) return@launch } FirebaseCrashlytics.getInstance().log("Activity: $activity") FirebaseCrashlytics.getInstance().log("Product to purchase: $product") try { val params = PurchaseParams.Builder(activity, product)
// To ensure the uiState.value.activeSubscriptionProduct is up to date. fetchCustomerInfo()
uiState.value.activeSubscriptionProduct?.let { currentSubscription -> FirebaseCrashlytics.getInstance() .log("Current subscription: $currentSubscription") if (product != currentSubscription) { val currentProductId = currentSubscription.id.split(":").first() val newProductId = product.id.split(":").first() val isCrossGrade = currentProductId == newProductId val isUpgrade = pricePerYear(product) > pricePerYear(currentSubscription) val replacementMode = if (isCrossGrade) { GoogleReplacementMode.WITHOUT_PRORATION } else if (isUpgrade) { GoogleReplacementMode.CHARGE_PRORATED_PRICE } else { GoogleReplacementMode.DEFERRED } params.googleReplacementMode(replacementMode) params.oldProductId(currentProductId)
FirebaseCrashlytics.getInstance() .log("Parameters: currentProductId=$currentProductId, newProductId=$newProductId, isCrossGrade=$isCrossGrade, isUpgrade=$isUpgrade, replacementMode=$replacementMode") } } _uiState.value = uiState.value.copy(isPurchasing = true) val result = Purchases.sharedInstance.awaitPurchase(params.build()) FirebaseCrashlytics.getInstance().log("Result: $result") if (result.customerInfo.activeSubscriptions.contains(product.id)) { _effect.emit(Effect.DisplaySuccessMessage(message = activity.getString(R.string.message_purchase_succeeded))) updateSubscriptionStatus(isSubscribed = true) fetchCustomerInfo() } } catch (e: PurchasesTransactionException) { if (!e.userCancelled) { _effect.emit(Effect.DisplayErrorMessage(e.message)) } FirebaseCrashlytics.getInstance().recordException(e) } finally { _uiState.value = uiState.value.copy(isPurchasing = false) } } } < /code> Ich kann beobachten, dass das Protokoll, das ich in Crashlytics einfügt, wenn der Fehler auftrittParameters: currentProductId=airfriend_pro, newProductId=airfriend_mega, isCrossGrade=false, isUpgrade=true, replacementMode=CHARGE_PRORATED_PRICE [/code] Ich bitte den Benutzer auch zu 1) Überprüfen bleibt.[code] Non-fatal Exception: com.revenuecat.purchases.PurchasesTransactionException: One or more of the arguments provided are invalid. at com.revenuecat.purchases.CoroutinesExtensionsCommonKt$awaitPurchase$2$2.invoke(CoroutinesExtensionsCommon.kt:60) at com.revenuecat.purchases.CoroutinesExtensionsCommonKt$awaitPurchase$2$2.invoke(CoroutinesExtensionsCommon.kt:55) at com.revenuecat.purchases.ListenerConversionsCommonKt$purchaseCompletedCallback$1.onError(ListenerConversionsCommon.kt:22) at com.revenuecat.purchases.PurchasesOrchestrator$dispatch$1.invoke(PurchasesOrchestrator.kt:944) at com.revenuecat.purchases.PurchasesOrchestrator$dispatch$1.invoke(PurchasesOrchestrator.kt:943) at com.revenuecat.purchases.PurchasesOrchestrator.dispatch$lambda$17(PurchasesOrchestrator.kt:845) at androidx.appcompat.widget.TooltipCompatHandler$$ExternalSyntheticLambda0.run(R8$$SyntheticClass:9) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:230) at android.os.Looper.loop(Looper.java:319) at android.app.ActivityThread.main(ActivityThread.java:9063) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:588) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103) [/code]
Ich arbeite derzeit an einer plattformübergreifenden App. Ich verwende Quasar & Vue und Kondensator. Meine App funktioniert gut auf dem Desktop und lässt sich gut erstellen. Aber wenn ich es auf...
Ich möchte über eine Java Elastic Beanstalk-Anwendung auf Dateien in einem AWS S3-Bucket zugreifen.
Die Anwendung (ein Spring-Boot-Mikroservice) läuft einwandfrei, wenn sie lokal ausgeführt wird. Es...
Ich versuche, whois Eurid ohne Glück zu öffnen. Selenium öffnet den Browser (mit Chrome und FF ausprobiert), aber wenn ich versuche, bestimmte URL zu öffnen (
Nichts öffnet sich, ich habe nur leere...
Es gibt wahrscheinlich einen einfachen Trick dafür, aber ich weiß nur nicht, was das ist. Ich habe eine portable Klassenbibliothek, die .NET MAUI { Windows, Android, iOS }, aber auch WinForms und WPF...