我一直在研究 IAB V3,并且在尝试从商店中获取 sku 详细信息时遇到了麻烦。在检查库存查询的结果失败后,我尝试使用 inv.getSkuDetails(MODULE).getPrice(); 获取详细信息 这总是返回null,在调试时我可以看到库存对象是空的。
然而,这些请求总是返回 null。我知道 google 要求您将 apk 上传到 alpha 发布通道(并发布它)并激活 InAppPurchase(我还给了商店几天时间来接管更改)。为了测试,我使用了与上传到 alpha 通道相同的 APK。
IabHelper 显然设法连接到正确的应用程序,因为可以进行测试购买,并且可以从商店查询。
代码:
`mHelper = new IabHelper(MainActivity.this, getString(getString(R.string.key1));
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener(){
@Override
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Log.d(TAG, "Problem Setting up Billing" + result);
return;
}
IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inv) {
if (result.isFailure()) {
Toast.makeText(getApplicationContext(), R.string.connectionFailed, Toast.LENGTH_SHORT).show();
Log.d(TAG, result.getMessage() + result.getResponse() + inv.toString());
return;
}
String modulePrice = inv.getSkuDetails(MODULE).getPrice();
String moduleTitle = inv.getSkuDetails(MODULE).getTitle();
String moduleDescription=inv.getSkuDetails(MODULE).getDescription();
}
}
ArrayList<String> skuList=new ArrayList<String>();
skuList.add(MODULE);
try {
mHelper.queryInventoryAsync(true, skuList, mQueryFinishedListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
});`
忽略错误的缩进和缺少的括号,因为我剪掉了一些代码。我非常感谢有关可能导致此问题的任何想法。谢谢