Codename One wasPurchased()方法:Android设备是否支持?

时间:2016-11-09 15:17:48

标签: android in-app-purchase codenameone

对于我的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()将按预期工作。

任何帮助表示赞赏,

1 个答案:

答案 0 :(得分:2)

这可能更有用:https://github.com/codenameone/CodenameOne/blob/master/Ports/Android/src/com/codename1/impl/android/CodenameOneActivity.java#L191-L209

实际上被调用的那块。几年前我们迁移到新的Android应用内购买3 API时添加了对托管购买的支持:https://www.codenameone.com/blog/migrating-to-androids-in-app-purchase-30.html