Flutter/Android:如何修复“计费服务已断开”?

问题描述 投票:0回答:1

不久前,我愉快地从代码实验室复制并粘贴代码,将应用程序内购买添加到 Flutter 应用程序(Android 和 iOS)中。 它正在生产中工作。然而,突然之间,从 VS Code 运行 Android 构建,会快速连续打印以下两条消息:

W/BillingClient(25973): Billing service disconnected.
D/InAppPurchasePlugin(25973): Tried to call onBillingSetupFinished multiple times.

消息被记录数百次后,以下

DeadObjectException
偶尔会加入:

W/BillingClient(25973): Exception while checking if billing is supported; try to reconnect
W/BillingClient(25973): android.os.DeadObjectException
W/BillingClient(25973):     at android.os.BinderProxy.transactNative(Native Method)
W/BillingClient(25973):     at android.os.BinderProxy.transact(BinderProxy.java:595)
W/BillingClient(25973):     at com.google.android.gms.internal.play_billing.zzh.zzo(com.android.billingclient:billing@@6.0.1:2)
W/BillingClient(25973):     at com.google.android.gms.internal.play_billing.zzc.zzq(com.android.billingclient:billing@@6.0.1:5)
W/BillingClient(25973):     at com.android.billingclient.api.zzaf.zza(com.android.billingclient:billing@@6.0.1:13)
W/BillingClient(25973):     at com.android.billingclient.api.zzac.call(Unknown Source:2)
W/BillingClient(25973):     at java.util.concurrent.FutureTask.run(FutureTask.java:264)
W/BillingClient(25973):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
W/BillingClient(25973):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
W/BillingClient(25973):     at java.lang.Thread.run(Thread.java:1012)

这些消息的问题是设备运行很热并且动画变得不稳定,表明

BillingClient
InAppPurchasePlugin
正忙于无休止的循环。

现在的简短问题是,造成这种情况的原因是什么?又该如何解决呢?

发生地点:

代码实验室建议创建一个

IAPConnection
类,如下所示:

// Gives the option to override in tests.
class IAPConnection {
  static InAppPurchase? _instance;
  static set instance(InAppPurchase value) {
    _instance = value;
  }

  static InAppPurchase get instance {
    _instance ??= InAppPurchase.instance;
    return _instance!;
  }
}

首次访问

InAppPurchase.instance;
后不久,消息开始显示。 即使 in_app_purchase 的 api 未使用。

同样有趣的是

IAPConnection.instance.purchaseStream
onError()
回调未被调用。

除此之外,应用内购买在生产中运行得很好,甚至在调试模式下,购买也会在消息开始显示之前正确恢复。

它发生在具有 in_app_purchase 包 3.1.5 至 3.1.10 和 Flutter 3.13.6 的物理 Android 13 设备上。

非常感谢任何有关导致此问题的原因或如何解决或解决此问题的想法。谢谢你。

android flutter in-app-purchase
1个回答
0
投票

我也有同样的情况,突然在使用 flutter in_app_purchase 的物理 Android 设备上出现此错误:^3.1.10。

奇怪的是,它在一段时间之前就可以工作......

© www.soinside.com 2019 - 2024. All rights reserved.