"Ein oder mehrere der bereitgestellten Argumente sind ungültig", wenn Sie über die Revenuecat in Android -App auf eine h
Posted: 25 Feb 2025, 09:13
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. />
Ich bitte den Benutzer auch zu 1) Überprüfen bleibt.
Code: Select all
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: Select all
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)