对于我的Codename One应用程序,我试图弄清楚我是否可以判断是否已经在Android上购买了应用内购买(非消费品)(code shown in my other SO question)。
根据此2014 question,似乎Android上不支持托管购买。但是,当我在Android上测试isManagedPaymentSupported()
时,它返回true,我可以购买应用内购买。
因此,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将应用内商品视为非耗材,您必须使用后缀" _nonconsume"在开发人员控制台中的SKU名称(例如:" myappfull_nonconsume")。然后在将您的应用提交到Alpha测试频道后等待几个小时,当应用可用时,Google Play会记住购买,wasPurchased()
将按预期工作。
任何帮助表示赞赏,
答案 0 :(得分:2)
实际上被调用的那块。几年前我们迁移到新的Android应用内购买3 API时添加了对托管购买的支持:https://www.codenameone.com/blog/migrating-to-androids-in-app-purchase-30.html