gpt4 book ai didi

android - 检查用户是否可以通过 PlayStore 进行应用内结算

转载 作者:行者123 更新时间:2023-11-29 00:58:28 25 4
gpt4 key购买 nike

因此,我们希望通过 Google 的计费 API 和中国的支付宝支持应用内计费。我编写了一个方法,该方法应返回 GooglePlay 或支付宝计费客户端(以可用者为准)。我需要一种方法来确定用户是否可以使用 Google 的结算服务,以便我知道返回哪个客户端。

到目前为止,我已经遇到了几个不同的选项,但我不确定哪一个是我需要的:

  1. 创建一个 ServiceConnection 并检查 IInAppBillingService.Stub.asInterface(service) 的结果
    .isBillingSupported(3, context.packageName, "inapp")

完整代码如下:https://gist.github.com/first087/9088162

这有点乏味,因为我需要等待服务连接、获取异步结果然后返回正确的计费管理器,但乍一看似乎正是我需要的。

  1. 使用 GoogleApiAvailability 类并检查 isGooglePlayServicesAvailable(context) 的结果

此选项比第一个选项干净很多,但我不确定它是否返回我需要的内容并且还要求我添加 com.google.android.gms:play-services-base 库添加到我的项目中。

  1. 检查设备上是否安装了 GooglePlay 应用。

这是最不可靠的选择(我认为),因为你可以手动安装应用程序,即使它不是由制造商预装的,然后你可能无法购买,因为你在中国他们不允许这样做。


有没有人有过类似的经历?如何正确判断用户是否可以通过PlayStore进行购买?

最佳答案

因此,在测试了中国的方法后,在安装和未安装 PlayStore 应用程序的手机上,我们发现了以下内容:

安装了 PlayStore 应用程序并且没有 VPN

  • GoogleApiAvailability.isGooglePlayServicesAvailable() 返回代码 2 - ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED
  • IInAppBillingService.isBillingSupported() 返回代码 3 - BillingResponse.BILLING_UNAVAILABLE

没有安装 PlayStore 应用并且没有 VPN

  • GoogleApiAvailability.isGooglePlayServicesAvailable() 返回代码 9 - ConnectionResult.SERVICE_INVALID
  • IInAppBillingService.isBillingSupported() 返回代码 3 - BillingResponse.BILLING_UNAVAILABLE

安装了 PlayStore 应用程序并 VPN

  • GoogleApiAvailability.isGooglePlayServicesAvailable() 返回代码 0 - ConnectionResult.SUCCESS
  • IInAppBillingService.isBillingSupported() 返回代码 3 - BillingResponse.BILLING_UNAVAILABLE

结论:确定计费是否实际可用的最安全方法是通过 isBillingSupported() 方法。如果您不想通过问题选项 1 中显示的“hacky”方式使用它,您可以实例化一个新的 BillingClient 并等待其 startConnection() 的回调 方法。

这是一个 gist我编写的协同程序的一部分,它为您提供 BillingManager 的两种实现之一,具体取决于是否可以通过 PlayStore 进行应用内计费。

关于android - 检查用户是否可以通过 PlayStore 进行应用内结算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52858403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com