我在应用程序中使用InApp V3代码进行应用内购买,当设备中没有Google帐户时,出现此错误BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE
和error value :3
。我想知道是否还有其他可能会发生此错误,因为当我收到此错误时,我需要向用户显示一些数据的弹出窗口。如果这是由于设备上无法使用Google帐户而引起的,我将显示带有相关文本的对话框。这是我正在使用的代码
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
// error here
return;
}
}
});
这是错误
Error checking for billing v3 support. (response: 3:Billing Unavailable)
最佳答案
正如我们可以直接在google提供的示例的IabHElper的code of the setup中看到的那样,该错误表示:
如您所见here,该错误意味着
Billing API version is not supported for the type requested
这是应用内结算引用(IAB版本3),因此该错误表示该设备上未安装IAB v3。
实际上,这意味着用户拥有一个Google帐户,并且可能还有一个应用程序内结算服务,但是它没有最新版本。这种情况发生在旧设备上,并且用户从不更新任何东西,它曾经是可以看到旧市场应用程序而不是Play应用程序的设备。
因此,您必须向用户显示的错误以及要执行的测试不是设备是否有Google帐户,而是设备是否已安装并正确更新了Google Play服务。
更新:
如果您在所有库SDK和Google提供的帮助程序类中查找代码,那么唯一可以在所调用函数中找到它的唯一地方是
startSetup
类的IabHelper
Intent serviceIntent = new Intent(
"com.android.vending.billing.InAppBillingService.BIND");
if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0)
.isEmpty()) {
// service available to handle that Intent
mContext.bindService(serviceIntent, mServiceConn,
Context.BIND_AUTO_CREATE);
} else {
// no service available to handle that Intent
mServiceConn=null;
if (listener != null) {
listener.onIabSetupFinished(new IabResult(
BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE,
"Billing service unavailable on device."));
}
}
这意味着应用程序无法连接到设备中的服务,因为程序包管理器甚至都不知道它。多数民众赞成在唯一的选择,可以触发该错误。这意味着它无法连接到服务?这意味着其中之一:
因此,您的错误仅代表其中之一,对您来说意味着您必须向用户显示消息,例如“您没有安装Google Play服务,或者必须更新它”。并且没有其他可能性或得到该错误。
但是,如果您想让用户更轻松,则可以说他们需要将Google Play应用更新为最新版本。这将使一切正常运作。