Google在应用内购买获取产品列表

时间:2013-05-14 16:11:49

标签: android google-play-services android-billing

我从here找到了以下代码,以便从Google Play商店获取产品列表

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

有没有办法获得动态产品列表?这里是硬编码。当我在应用程序启动后添加新产品时会发生什么?

5 个答案:

答案 0 :(得分:31)

目前无法使用Google API。

创建一个包含当前JSON的{​​{1}}文件,并将其放在某个服务器上。

在您的应用中,首先从服务器网址加载此文件,然后使用此SKUs列表通过Google API检索产品详细信息。

致Google:为此提供功能,呐喊你!

答案 1 :(得分:6)

如果您不想实现从您自己的服务器获取产品列表的逻辑,另一种选择是使用预定义的" dummy"产品ID,如产品ID插槽:

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

getSkuDetails函数将仅为非现有产品ID返回null。因此,如果您不希望您的产品列表变化太频繁或过多,那么您可以在应用中定义少量产品ID,并跳过getSkuDetails返回的空值。

如果您想添加新产品,只需使用开发者控制台中下一个未使用的插槽定义的ID,您的应用就会在不更新应用的情况下列出该ID。

删除产品可能会非常棘手,因为仍会返回非活动和已删除的产品ID,因此您可以使用其描述字段标记产品已删除 - 使用预定义的常量,例如" NOT AVAILABLE"并检查它在您的应用程序中的存在。如果产品描述等于此常量,则只需跳过它并且不要列出它。

我知道,我知道。这是一个肮脏的黑客。但它确实有效。

答案 2 :(得分:1)

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

在不更改应用代码的情况下获取新产品的唯一原因是改变产品本身的价格,但这意味着违反Google条款和条款。条件

答案 3 :(得分:0)

执行此操作的一种方法是在数据库(如 Firebase DB)中创建所有产品 ID 的副本,在您的应用中query 这些 ID 并将它们添加到字符串列表中。然后最后将这个列表传递给 SkuDetailsParams setSkusList() 方法:

SkuDetailsParams params = SkuDetailsParams.newBuilder()
                        .setType(INAPP)
                        .setSkusList(skuList) //pass the list there
                        .build();

答案 4 :(得分:0)

我想,最简单的方法是使用 Firebase Remote Config,其中 skuList 将在发布到所有设备后自动更新。

检查远程配置的实施: https://firebase.google.com/docs/remote-config/use-cases