在我的应用程序中,我使用InApp V3代码进行应用程序内的购买,当Google帐户在设备中不可用时,我会得到这个错误BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE
和error value :3
。我想知道是否还有其他可能得到这个错误,因为当我得到这个错误时,我需要用一些数据向用户显示一个弹出窗口。如果这是导致由于谷歌帐户无法在设备上,我将显示与相关的文字对话框。这是我正在使用的代码
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)
发布于 2014-01-22 05:37:45
正如我们在Google提供的示例的设置的代码中直接看到的那样,错误意味着:
“设备上无法使用计费服务。”
正如您可以阅读这里那样,这个错误意味着
Billing API version is not supported for the type requested
这是应用内计费参考(IAB版本3),因此错误意味着IAB v3没有安装在设备上。
实际上,这意味着用户有一个Google帐户,也可能是应用内计费服务,但它没有最后一个版本。这种情况发生在旧设备上,用户从来不更新任何内容。它过去是一种设备,你可以在那里看到旧的市场应用程序,而不是播放应用。
因此,您必须向用户显示的错误,以及您必须执行的测试不是设备是否有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服务,或者您必须更新它”。没有其他的可能会导致这个错误。
但是,如果你想让用户更容易,你可以说他们需要将Google应用程序升级到最后一个版本的。这会让一切都像魅力一样运转。
发布于 2014-07-30 10:22:34
在用户从设备中删除他们的google帐户后,也会收到此错误。
发布于 2018-04-07 06:58:42
用任何帐户登录游戏商店。
登录后,计费工作,甚至在Android模拟器上。
https://stackoverflow.com/questions/21091353
复制相似问题