当 BillingClient 服务断开连接时,它可能会返回 SERVICE_DISCONNECTED 状态。要解决此问题,可以使用如下代码:
private fun isBillingSupported(): Boolean {
val billingClient = BillingClient.newBuilder(requireContext())
.setListener(this)
.enablePendingPurchases()
.build()
// start connection
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingSetupFinished(billingResult: BillingResult) {
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
val result = billingClient.isFeatureSupported(BillingClient.FeatureType.SUBSCRIPTIONS)
if (result.responseCode == BillingClient.BillingResponseCode.OK) {
val isSupported = result.isFeatureSupported(BillingClient.FeatureType.SUBSCRIPTIONS)
return isSupported
}
} else {
Log.w(TAG, "onBillingSetupFinished: ${billingResult.debugMessage}")
}
}
override fun onBillingServiceDisconnected() {}
})
return false
}
此代码演示如何使用 BillingClient 检查应用支持的特性。在执行此代码时,如果服务没有连接,它会启动 BillingClientUpdateListener。在获取应用支持的特性时,您可以通过返回的 BillingResult 控制发生的任何错误。