在Android上,我试图弄清楚如何在app购买中升级我的订阅。假设我有3个订阅类型1,2和3层。我使用此方法getBuyIntent购买我的第一个订阅层1,然后此方法返回带有RESPONSE_CODE键和BUY_INTENT键的包。
然后使用该捆绑包我做了一个bundle.getParcelable(" BUY_INTENT");它返回一个PendingIntent,一切都很好。
但是当我想从第1层升级到第2层时,我需要根据此https://developer.android.com/google/play/billing/billing_reference.html#getBuyIntent
使用此方法getBuyIntentExtraParams当我使用getBuyIntentExtraParams时,返回的包不包含BUY_INTENT键,但它返回INAPP_PURCHASE_ITEM_LIST,INAPP_PURCHASE_DATA_LIST和INAPP_DATA_SIGNATURE_LIST键。
INAPP_PURCHASE_ITEM_LIST = [" product.id.name.tier1"]
所以看起来getBuyIntentExtraParams似乎正在返回你已经购买的东西。这与getPurchases()方法非常相似。
我无法在此捆绑包上执行bundle.getParcelable(" BUY_INTENT"),因为它没有此密钥。我注意到在google doc中它说getBuyIntentExtraParams是getBuyIntent的变种,所以我假设getBuyIntentExtraParams应该返回一个BUY_INTENT键。
所以我想知道如何才能正确使用这种方法?我注意到谷歌有关于文档的问题:https://issuetracker.google.com/issues/37140925
这是我的代码:
ArrayList skus = new ArrayList();
skus.add(" product.id.name.tier1&#34);
Bundle extraBundle = new Bundle();
extraBundle.putStringArrayList(" skusToReplace",skus);
getBuyIntentExtraParams(7,&#34; app.package.name&#34;,&#34; subs&#34;,&#34; product.id.name.tier2&#34;,DEVELOPER_PAYLOAD,extraBundle); < / p>
注意第三个参数&#34; subs&#34;应该是第四个参数&#34; product.id.name.tier2&#34;根据文件,反之亦然。但是,当我这样做时,它抱怨并说它不知道什么项目类型是product.id.name.tier2。所以我觉得文档不对。
PS:我也尝试过6而不是7(api版本)没有运气我想我的主要问题是如何以不同于getBuyIntent的方式使用GetBuyIntentExtraParams?
我正在使用sdk min和目标19 btw。
我还注意到我在InAppBillingService.aidl文件中看不到这一点 isBillingSupportedExtraParams。
更新:
我将此添加到我的InAppBillingService.aidl文件中:
捆绑getBuyIntentToReplaceSkus(int apiVersion,String packageName, 在List oldSkus,String newSku,String type,String developerPayload);
然后我调用了它而不是getBuyIntentExtraParams并且它工作了!
我只是想知道这是正确的方法吗?
答案 0 :(得分:1)
要回答关于如何使用getBuyIntentExtraParams的原始问题,我发现你需要从google复制实际的aidl文件并替换你的aidl文件..不要复制google的aidl中的代码并替换你的代码。
答案 1 :(得分:0)
我可以确认getBuyIntentToReplaceSkus是用于升级和降级订阅的正确方法。