Google的IAB API3 getSkuDetails()方法返回失败5:Developer Error

 EvilMaknaeKYU 发布于 2023-02-07 12:08

我正在尝试将Google的应用内结算API3合并到我使用API​​2的代码中.

我对mHelper(IabHelper对象)的调用成功,所以我连接到谷歌的服务器.看来我可以确定自有项目,因为我的QueryInventoryFinishedListener返回一个包含我所有购买项目的有效库存.我也可以执行购买.

但是,查询sku详细信息失败(getSkuDetails()).以下是Eclipse中所有与IabHelper相关的LogCat输出(我删除了我的软件包名称和产品SKU)导致失败:

12-31 11:47:04.642: D/IabHelper(13633): Starting in-app billing setup.
12-31 11:47:04.832: D/IabHelper(13633): Billing service connected.
12-31 11:47:04.832: D/IabHelper(13633): Checking for in-app billing 3 support.
12-31 11:47:04.832: D/IabHelper(13633): In-app billing version 3 supported for com.XXXX.XXXX
12-31 11:47:04.832: D/IabHelper(13633): Subscriptions AVAILABLE.
12-31 11:47:04.842: D/IabHelper(13633): Starting async operation: refresh inventory
12-31 11:47:04.842: D/IabHelper(13633): Querying owned items, item type: inapp
12-31 11:47:04.842: D/IabHelper(13633): Package name: com.XXXX.XXXX
12-31 11:47:04.842: D/IabHelper(13633): Calling getPurchases with continuation token: null
12-31 11:47:04.912: D/IabHelper(13633): Owned items response: 0
12-31 11:47:04.912: D/IabHelper(13633): Sku is owned: com.XXXX.XXXX.item_one
12-31 11:47:04.922: D/IabHelper(13633): Sku is owned: com.XXXX.XXXX.item_two
...
(and 45 other items)
...
12-31 11:47:05.012: D/IabHelper(13633): Continuation token: null
12-31 11:47:05.012: D/IabHelper(13633): Querying SKU details.
12-31 11:47:05.012: D/IabHelper(13633): getSkuDetails() failed: 5:Developer Error
12-31 11:47:05.012: D/IabHelper(13633): Ending async operation: refresh inventory

这似乎不是签名问题,因为我可以成功连接并进行购买.

有没有其他人遇到过getSkuDetails()因"开发者错误"消息而失败的问题,而其他方面的应用程序计费工作?

谢谢你的时间!

1 个回答
  • 我遇到了同样的问题.当您的广告资源中有超过20个SKU时,就会出现此问题.

    解决方案是以块的形式获取SKU详细信息.替换querySkuDetailsIabHelper.java用:

    int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus)
        throws RemoteException, JSONException {
        logDebug("Querying SKU details.");
        ArrayList<String> skuList = new ArrayList<String>();
        skuList.addAll(inv.getAllOwnedSkus(itemType));
        if (moreSkus != null) {
            for (String sku : moreSkus) {
                if (!skuList.contains(sku)) {
                    skuList.add(sku);
                }
            }
        }
    
        if (skuList.size() == 0) {
            logDebug("queryPrices: nothing to do because there are no SKUs.");
            return BILLING_RESPONSE_RESULT_OK;
        }
    
        while (skuList.size() > 0) {
            ArrayList<String> skuSubList = new ArrayList<String>(
                    skuList.subList(0, Math.min(19, skuList.size())));
            skuList.removeAll(skuSubList);
    
            Bundle querySkus = new Bundle();
            querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuSubList);
            Bundle skuDetails = mService.getSkuDetails(3,
                    mContext.getPackageName(), itemType, querySkus);
    
            if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) {
                int response = getResponseCodeFromBundle(skuDetails);
                if (response != BILLING_RESPONSE_RESULT_OK) {
                    logDebug("getSkuDetails() failed: "
                            + getResponseDesc(response));
                    return response;
                } else {
                    logError("getSkuDetails() returned a bundle with neither an error nor a detail list.");
                    return IABHELPER_BAD_RESPONSE;
                }
            }
    
            ArrayList<String> responseList = skuDetails
                    .getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST);
    
            for (String thisResponse : responseList) {
                SkuDetails d = new SkuDetails(itemType, thisResponse);
                logDebug("Got sku details: " + d);
                inv.addSkuDetails(d);
            }
        }
        return BILLING_RESPONSE_RESULT_OK;
    }
    

    这种方法可以获得18个大小的SKU.它对我有用.

    2023-02-07 12:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有