【问题标题】:in-app purchase queryInventoryAsync doesnt return item which is already purchased应用内购买查询库存异步不返回已购买的项目
【发布时间】:2014-03-24 09:03:45
【问题描述】:

我正在使用测试产品 ID (PRODUCT_ID = "1023608") 来实现诺基亚应用内购买。

我可以使用以下代码 sn-p 成功购买物品。

mHelper.launchPurchaseFlow(this, PRODUCT_ID, RC_REQUEST, this, "");

我在onIabPurchaseFinished 收到了成功回复。

当我尝试使用 mHelper.queryInventoryAsync(this); 查询最近的购买时,我得到了 Owned items response: 0

我只是想知道它应该返回我购买商品的产品 ID。

如果我遗漏了什么,有人可以帮我吗?

谢谢:-)

【问题讨论】:

    标签: android in-app-purchase in-app-billing android-billing nokiax


    【解决方案1】:

    您是否使用模拟器进行测试:那么已知问题会指出“使用模拟器发起购买交易时,测试ID的状态不会存储到后端。

    这里是它的链接:http://developer.nokia.com/community/wiki/Nokia_X_known_issues

    【讨论】:

    • Jukka 先生,我正在诺基亚 X 设备上进行测试。
    • 好的,那么我需要在站点外部 ping 一些帮助,看看那里发生了什么。
    • @Jukka 我正在使用测试 ID。这是因为 queryInventoryAsync 没有显示为已购买吗?第二点提到我猜在文档中。
    • 我向 NIAP 专家寻求帮助,确实可能是重点,但确实应该在文档中更清楚地说明。
    • Jukka 谢谢 :-) 我还在诺基亚商店发布了一个带有 In App 项目的示例应用程序。一个被批准的我将使用实际产品 ID 测试该应用程序。
    【解决方案2】:

    您需要将 productBundle 作为参数提供给 getPurchases-call。该捆绑包应包含与您的应用相关的产品:

    ArrayList<String> products = new ArrayList<String>();
    products.add("1023608");
    products.add("1023609");
    products.add("1023610");
    
    Bundle queryBundle = new Bundle();
    queryBundle.putStringArrayList("ITEM_ID_LIST", products);
    
    Bundle ownedItems = mService.getPurchases(3, mContext.getPackageName(), ITEM_TYPE_INAPP, queryBundle, continueToken);
    

    请注意,测试产品 ID 不适用于 getPurchases。

    【讨论】:

    • 请注意,还有其他方法可以通过使用 setProductMappings 方法来提供这些产品。 (见链接:developer.nokia.com/resources/library/nokia-x/…)。如果您使用该方法,则不应为 getPurchases 提供该 queryBundle。
    • +1 感谢您的回复。我已经按照您上面显示的方式完成了完全相同的操作。我目前认为 getPurchases 可能不适用于测试产品 ID。
    • 没错。测试产品 ID 不适用于 getPurchases。
    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    相关资源
    最近更新 更多