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 versuche, eine signierte XML -Datei (ein Ereignis) an einen Webservice zu senden, aber wenn ich das signierte Ereignis in eine XML -Stapeldatei einfüge, wird die Signatur ungültig. Ich verwende...
Ich möchte Dokumente mit Jazzy für mein XCode -Projekt erstellen, es schlägt jedoch fehljazzy \
--module FooBar \
--swift-build-tool xcodebuild \
--build-tool-arguments...
Ich versuche, XML in einem WiX-Installationsprogramm zu analysieren. Das XML wäre ein Objekt aller meiner von einem Webserver zurückgegebenen Fehler. Ich erhalte die Fehlermeldung im Fragentitel mit...