【发布时间】:2017-03-23 11:04:30
【问题描述】:
对于我的 Codename One 应用程序,我试图弄清楚我是否可以判断是否已经在 Android 上购买了应用内购买(非消耗品)(code shown in my other SO question)。
根据2014 question,Android 似乎不支持托管购买。但是,当我在 Android 上测试 isManagedPaymentSupported() 时,它返回 true,我可以购买 In-App-Purchase。
因此,Android 似乎支持托管购买。然而wasPurchased() 即使在成功购买后仍然是错误的,尽管this Google Group discussion 似乎说ẁasPurchased() 确实有效。
我试图联系source code for that wasPurchased() method,但找不到任何有用的东西(也许我没有找到正确的代码片段)。
所以我完全迷失了,因为我的代码可以在模拟器上按预期运行,但不能在真正的 Android 设备上运行(这也可能有问题)。因此,有人可以告诉我wasPurchased() 是否在 Android 上运行(在这种情况下,我的 Android 设备出现故障),或者我是否必须实现一些原生 Android 代码才能完成 wasPurchassed() 的预期工作?
编辑 2016 年 11 月 10 日:使用后缀“_nonconsume”解决
正如blog post @Shai showed 在他的回答中所写,默认情况下,Google Play 将产品视为消耗品。这就是为什么在非消耗品wasPurchased() 返回错误的情况下。要使 Google Play 将应用内产品视为非消耗品,您必须在开发者控制台中的 SKU 名称中使用后缀“_nonconsume”(例如:“myappfull_nonconsume”)。然后在将您的应用程序提交到 alpha 测试通道后等待几个小时,当应用程序可用时,Google play 会记住购买,wasPurchased() 将按预期工作。
任何帮助表示赞赏,
【问题讨论】:
标签: android in-app-purchase codenameone