应用内结算V3无法查询,而无需网络连接或在飞机/飞行模式项目(In-app billing v3 u

2019-07-21 20:18发布

通过V3示例文件在我的项目修改它会正常工作。 但是我的朋友刚刚通过打开关闭Wi-Fi并开启飞行模式测试的代码。 这似乎导致不能够查询应用内广告资源。

// Listener that's called when we finish querying the items and subscriptions we own
private final IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
    @Override
    public void onQueryInventoryFinished(IabResult result, Inventory inventory) {

        if (result.isFailure()) {
            // STOPS here and doesn't continue on with no network connection
            return;
        }

        ......
    }
};

我认为,一个成功的初始购买的是V3存储在本地,在它的缓存,这样,它并不总是必须有一个网络连接,检查后。 有没有其他人遇到了这个问题? 我希望我失去了一些东西完全明显,或者如果这是它如何工作的。

Answer 1:

我想我可能已经找到了答案。 在下面的V3的TrivialDriveExample我打电话的mHelper.startSetup(该queryInventoryAsync功能)功能,如下所示:

Log.d(TAG, "Setup successful. Querying inventory.");
mHelper.queryInventoryAsync(mGotInventoryListener);

相反,现在我通过我的单品,我要查询的String数组列表:

List<String> skulist = new ArrayList<String>();
skulist.add("my_sku_name1");
skulist.add("my_sku_name2");
mHelper.queryInventoryAsync(true, skulist, mGotInventoryListener);

然后,我通过打开飞行模式测试,我可以查询我的采购罚款!



Answer 2:

问题是,在你的第一种方法,该API不知道什么单品存在,每默认(单PARAM版本)试图查询该列表。 在飞行模式,这是不可能的 - 要么是因为它不缓存的SKU列表,或者有一些内部错误阻止它完成。

您可以在您要查询的SKU列表发送(像你这样以后),也可以只为剿SKU列表中的在线查询。

helper.queryInventoryAsync(false, yourListener);

学分:jmrmb80

如果您需要此信息(即在您的应用程序显示的价格),这取决于更容易。

(看到该函数的其他重载或已经给出的答案最有可能你并不需要的SKU,用于检查购物的行为我想,所以我会去jmrmb80的答案 - 对我来说这解决了这个问题不认识到飞行模式购买



Answer 3:

对我来说,以下位工作...

mHelper.queryInventoryAsync(假的,mGotInventoryListener);

代替

mHelper.queryInventoryAsync(mGotInventoryListener);

我发现它在另一个链接一个错误刷新iventory(查询项目的价格)。 (响应:6:错误)



Answer 4:

我解决了这个问题远:

final ArrayList<String> iabItemSkus = new ArrayList<String>();
iabItemSkus.add(MyGame.productID_FULLVERSION);

// Disable SKU details if no network connection
boolean checkSkuDetails = isWifiConnected() ? true : false;

Gdx.app.log("IAB", "checkSkuDetails : " + checkSkuDetails);

mHelper.queryInventoryAsync(checkSkuDetails, iabItemSkus, mGotInventoryListener);

得不到SKU细节,如果没有网络。



文章来源: In-app billing v3 unable to query items without network connection or in airplane/flight mode