2013-05-14 138 views
9

我发现下面的代码here摆脱谷歌的产品列表play商店谷歌在应用内购买获得产品列表

ArrayList skuList = new ArrayList(); 
skuList.add("premiumUpgrade"); 
skuList.add("gas"); 
Bundle querySkus = new Bundle(); 
querySkus.putStringArrayList(“ITEM_ID_LIST”, skuList); 

有没有办法让活力的产品列表?这里它的硬编码。当我在应用程序启动后添加新产品时会发生什么?

+0

这方面有任何更新? – Caipivara 2014-09-16 16:10:37

回答

29

这目前不能使用Google API。

创建一个JSON文件,其中包含当前SKUs,并把它的一些服务器上。

在你的应用程序,第一负荷服务器的URL此文件,然后使用SKUs这个列表检索通过谷歌API产品的详细信息。

为谷歌:为此提供的功能,为你感到羞耻!

+1

还没有发布,直到2015年10月16日。 对你,谷歌和苹果也感到羞耻。大声笑 – 2015-10-16 06:21:26

+0

@Dinh,请给我链接的参考,找不到它。 – Dusan 2015-10-16 08:06:45

+0

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/ShowUI.html#//apple_ref/doc/uid/TP40008267-CH3-SW6 没有运行时机制来获取iTunes Connect中为特定应用程序配置的所有产品的列表。您有责任管理您的应用的产品列表并将该信息提供给您的应用。如果您需要管理大量产品,请考虑在iTunes Connect中使用批量XML上传/下载功能。 – 2015-10-19 06:00:00

6

如果您不希望实现从自己的服务器获得的产品列表中的逻辑,另一种选择是使用预先定义的“虚拟”产品ID,如产品编号插槽:

private static final String[] PRODUCTIDS = {"product1", "product2", "product3", etc. }; 

对于不存在的产品ID,getSkuDetails函数将简单地返回null。因此,如果您不希望产品列表变化太频繁或太多,那么您可以在应用中定义少量产品ID,并跳过由getSkuDetails返回的空值。

如果你想添加一个新的产品,只要使用由开发者控制台的下一个未使用的插槽中定义的ID和你的应用程序将列出它不更新的应用程序。

删除产品可能会非常棘手,因为不活动和删除的产品id仍将被返回,因此您可以使用其描述字段标记删除的产品 - 使用预定义常量,如“NOT AVAILABLE”,并检查其是否存在在你的应用中的存在。如果产品说明与此常数相等,则只需跳过它,不要列出它。

我知道,我知道。这是一个肮脏的黑客。但它的工作。

+0

如果您正在使用从谷歌范例项目辅助类,那么你可以通过调用'IabHelper.queryInventoryAsync查询产品(最终布尔querySkuDetails,最终名单 moreSkus,最终QueryInventoryFinishedListener听众)'(或者,如果你喜欢的同步版本),只需将SKU列表指定为神秘'moreSkus'参数即可。无论如何您都需要购买之前购买的产品,因此很难避免此类问题。仍然难以轻描淡写。 – racs 2016-01-27 22:46:30

0

这是不可能的原因。如果您能够获取更新的inapp产品列表,您将如何在不更改应用程序代码的情况下为这些新产品提供服务?如果您更改产品列表,则必须为处理新产品的应用发布更新。

的唯一原因,在不改变应用程序代码来获取新产品将改变价格的产品本身,而是这将意味着违背了谷歌方面&条件

相关问题