11

我从这里找到以下代码以从 google play store 获取产品列表

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

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

4

6 回答 6

33

这目前无法使用 Google API。

创建一个JSON包含 current 的文件SKUs并将其放在某个服务器上。

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

致谷歌:为此提供功能,SHAME ON YOU!

于 2013-05-14T16:35:47.980 回答
6

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

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

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

如果您想添加新产品,只需使用开发者控制台中下一个未使用的插槽定义的 id,您的应用将列出它而不更新应用。

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

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

于 2014-04-27T11:42:51.573 回答
2

It is not possible for a reason. If you were able to fetch the updated inapp product list how would you be able to serve those new products without changing the app code? If you change the product list then you have to release an update for the app that deals with the new products.

The only reason to fetch new products without changing the app code would be to change prices for the products themselves but that would mean going against the Google terms & conditions

于 2017-10-29T14:49:48.973 回答
1

现在可以使用Inappproducts: list API:

列出 Android 应用的所有应用内商品,包括订阅和托管的应用内商品。

另外,请阅读使用上述 API 所需的授权。

于 2019-03-12T07:39:40.167 回答
0

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

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

于 2021-07-30T23:02:31.493 回答
0

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

SkuDetailsParams params = SkuDetailsParams.newBuilder()
                        .setType(INAPP)
                        .setSkusList(skuList) //pass the list there
                        .build();
于 2021-04-03T06:44:44.983 回答