android - getPurchase() OK 但 getSkuDetails() NULL

标签 android in-app-purchase in-app

我无法从我的应用内项目中获取 sku 标题。

我遵循 TrivialDrive 示例,

我查询库存

try {
   mHelper.queryInventoryAsync(mGotInventoryListener);
} catch (IabAsyncInProgressException e) {
   complain("Error querying inventory. Another async operation in progress.");
}

我得到了正确的购买信息

String sku = inventory.getPurchase(SKU[i]).getSku();
Long date_l = inventory.getPurchase(SKU[i]).getPurchaseTime();

但是如果我收到的询问详情总是空的

inventory.hasDetails(SKU[i]);

apk 正在 beta 测试中。

最佳答案

尝试使用所有四个参数调用 mHelper.queryInventoryAsync()。

List<String> skus = new ArrayList<String>();
skus.add(SKU_PREMIUM);
mHelper.queryInventoryAsync(true,skus, skus, mGotInventoryListener);

来自 IabHelper 类

public void queryInventoryAsync(final boolean querySkuDetails, final List<String> moreItemSkus,
                                final List<String> moreSubsSkus, final QueryInventoryFinishedListener listener)

我遇到了同样的问题,.getPurchase() 和实际购买流程都正常。 还使用了 TrivialDrive 示例中的代码,所以我不知道 queryInventoryAsync() 可以采用四个参数。我也不知道为什么会这样。我怀疑 queryInventoryAsync(listener) 的“标准”流程本身只关心检查用户是否拥有某个项目的目的,并且需要特别告知寻找其他东西。 请注意,当您仅使用监听器作为参数调用它时,您的 sku 无处可寻,因此它可能甚至不知道要查找什么。

关于android - getPurchase() OK 但 getSkuDetails() NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49189902/

相关文章:

安卓图像切换器

ios - 在没有用户交互的情况下恢复 iOS 8 上的应用内购买?

ios - IAP SKErrorDomain 代码=0 Swift

android - 如何从 Android 应用程序内部了解用户谷歌播放国家/地区?

ios - iPhone 将新的非消耗性产品添加到现有已发布的应用程序中

android - 是否可以在保持向后兼容性的同时使用最新的 APP_PLATFORM?

android - 将 ListView 项目放在可见区域的中心

java - Android wifi 点对点

ios - 如何在 ios 应用程序中添加应用程序内购买,其中购买的项目需要可供我们的 web、android 应用程序的用户使用?

android - 如何避免向已经使用过应用程序内订阅的用户提供免费试用?