对于我的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似乎确实_2588809确实有效 .
我试图到达source code for that wasPurchased() method但找不到任何有用的东西(也许我找不到合适的代码片段) .
所以我完全迷失了,因为我的代码在模拟器上按预期工作,但不在真正的Android设备上(这也可能是错误的) . 因此有人可以告诉我 wasPurchased()
是否在Android上运行(在这种情况下我的Android设备有问题)或者我是否必须实施一些原生的Android代码来执行 wasPurchassed()
预期会做什么?
EDIT November 10th 2016 : Solved with suffix "_nonconsume
正如_2588814中所述,默认情况下,Google Play将该产品视为耗材 . 这就是为什么非易耗品 wasPurchased()
返回false . 要使Google Play将开发者控制台中的In-App-Product视为非耗材, you have to use the suffix "_nonconsume" in the SKU name (例如:"myappfull_nonconsume") . 然后在将您的应用程序提交到Alpha测试 Channels 后等待几个小时,当应用程序可用时,Google Play将记住购买并且 wasPurchased()
将按预期工作 .
任何帮助,赞赏,
1 回答
这可能更有用: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