【发布时间】:2019-02-23 23:33:56
【问题描述】:
我的问题是,在 Android 上,p.purchase() 方法是在下面的主类中触发实现的方法(对于非消耗性 IAP),还是这只是 IOS?
@Override
public void itemPurchased(String sku) {
背景信息: 我的应用程序使用非消耗性应用内购买,并发布到 IOS 和 Android。我将 IAP“收据”存储在我的云数据库中,这样我就知道他们是否购买了完整版。如果他们还没有购买,那么在使用 x 天后,它会在输入时提示他们,然后再发布 IAP 购买逻辑。
public void askAndProcessMainIap() {
if (Dialog.show("", "Your trial period has finished. Please upgrade to the Full Version", "Ok", null)) {
Purchase p = Purchase.getInAppPurchase();
p.purchase("main_app_iap_paid");
}
在 IOS 上一切正常,但在 Android 上,我所有的客户都报告说它不起作用 - 他们能够从 Google 购买 IAP,而且 Google 收据确实找到了正确的非消耗性 IAP(我已经看到它的名称在屏幕截图中)。但是我的应用程序没有将“收据”存储在我的数据库中。因此,当他们返回应用程序时,它会再次询问他们,然后发出他们已经购买的错误消息。
我需要触发 itemPurchased() 方法,因为它存储了数据库收据条目。 我问这个,因为 purchase() 方法的 CN1 javadoc 说“在 Android 上,您必须使用 subscribe(java.lang.String) 来购买 Play 商店订阅产品”。
对于 ref,我的 android.nonconsumable 构建提示应该是正确的,因为它发现 Google Play IAP 显示名称正常。用户在首次购买时不会报告任何错误。 谢谢
【问题讨论】:
-
我自己在 Android 上使用 IAP 时遇到了困难,因此不得不向 Steve 寻求帮助。我请他在这里回答。我们很清楚,这不是订阅,而是一次性付款,所以您不需要订阅,只需
itemPurchased回调?是否调用了任何回调?在模拟器上能正常工作吗? -
@ShaiAlmog 这是一次性付款(非消耗性 IAP)。模拟器工作(忽略它抱怨没有收据存储),因为它确实调用了回调。是的,它是 itemPurchased(String sku) 回调,我想检查它是否应该在 Android 上触发,因为 javadoc 让我三思而后行。我会进一步调试,让你知道我想出了什么。也许它正在触发并且它正在下游代码中的某处抑制错误。
标签: android codenameone