我在我的应用程序中使用 InApp V3 代码进行应用内购买,当 Google 帐户在设备。我想知道是否还有其他可能会出现此错误,因为当我收到此错误时,我需要向用户显示一个带有一些数据的弹出窗口。如果这是由于设备上的 Google 帐户不可用而导致的,我将显示带有相关文本的对话框。这是我正在使用的代码
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
// error here
return;
}
}
});
这是错误 计费 v3 支持的错误检查。 (回复:3:Billing Unavailable)
最佳答案
我们可以直接在 code of the setup 中看到Google提供的示例的IabHElper,错误的意思是:
"Billing service unavailable on device."
如您所见 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."));
}
}
这意味着应用无法连接到设备中的服务,因为包管理器甚至都不知道。这是唯一可以触发该错误的选项。它无法连接到服务是什么意思?这意味着其中之一:
- 设备未安装服务。
- 它有一个旧版本,因为我们知道最新版本的 Play 商店使用的是 IAB v3。
因此,您的错误仅表示其中之一,对您而言,这意味着您必须向用户显示一条消息,例如“您没有安装 Google Play 服务,或者您必须更新它”。并且没有其他可能会出现该错误。
但是,如果您想让用户更轻松,您可以说他们需要将 Google Play 应用更新到最新版本。这将使一切都像魅力一样发挥作用。
关于android - 在 InApp 购买中出现此错误代码 3 的可能性有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21091353/