Sch*_*ude 5 android in-app-billing android-billing google-play-services
因此,我们希望通过 Google 的计费 API 和支付宝(中国版)支持应用内计费。我编写了一个方法,该方法应该返回 GooglePlay 或 AliPay 计费客户端(以可用者为准)。我需要一种方法来确定用户是否可以使用 Google 的计费服务,以便我知道要返回哪个客户端。
到目前为止,我遇到了几种不同的选择,但我不确定哪一种是我需要的:
ServiceConnection并检查结果IInAppBillingService.Stub.asInterface(service)
.isBillingSupported(3, context.packageName, "inapp")这是完整的代码:https : //gist.github.com/first087/9088162
这有点乏味,因为我需要等待服务连接,获取异步结果然后返回正确的计费管理器,但乍一看似乎正是我需要的。
GoogleApiAvailability类并检查结果isGooglePlayServicesAvailable(context)这个选项比第一个更干净,但我不确定它是否返回我需要的内容,并且还要求我将com.google.android.gms:play-services-base库添加到我的项目中。
这是最不可靠的选项(我认为),因为您可以手动安装该应用程序,即使制造商未预先安装该应用程序,然后您可能无法购买,因为您在中国而他们没有不允许。
有没有人有类似的经历?如何正确判断用户是否可以通过PlayStore进行购买?
因此,在中国测试了这些方法之后,我们使用安装和未安装 PlayStore 应用程序的手机,发现了以下结果:
安装了PlayStore应用且没有 VPN
GoogleApiAvailability.isGooglePlayServicesAvailable()返回代码2 -ConnectionResult.SERVICE_VERSION_UPDATE_REQUIREDIInAppBillingService.isBillingSupported()返回代码3 -BillingResponse.BILLING_UNAVAILABLE未安装PlayStore应用且没有 VPN
GoogleApiAvailability.isGooglePlayServicesAvailable()返回代码9 -ConnectionResult.SERVICE_INVALIDIInAppBillingService.isBillingSupported()返回代码3 -BillingResponse.BILLING_UNAVAILABLE安装了PlayStore应用程序并 使用VPN
GoogleApiAvailability.isGooglePlayServicesAvailable()返回代码0 -ConnectionResult.SUCCESSIInAppBillingService.isBillingSupported()返回代码3 -BillingResponse.BILLING_UNAVAILABLE结论:确定计费是否实际可用的最安全方法是通过该isBillingSupported()方法。如果您不想通过问题选项 1 中显示的“hacky”方式使用它,您可以实例化一个 newBillingClient并等待其方法的回调startConnection()。
以下是我编写的协程的要点,它根据 PlayStore 的应用内计费是否可用,为您提供 BillingManager 的两种实现之一。
| 归档时间: |
|
| 查看次数: |
1401 次 |
| 最近记录: |