CN1 中 Android IAP 非消耗品购买

标签 android codenameone

我的问题是,在 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() 方法,因为它存储数据库收据条目。 我问这个问题是因为 buy() 方法的 CN1 javadoc 说“在 Android 上,您必须使用 subscribe(java.lang.String) 来获取 Play 商店订阅产品”。

作为引用,我的 android.nonconsumable 构建提示应该是正确的,因为它可以正常找到 Google Play IAP 显示名称。用户首次购买时不会报告任何错误。 谢谢

最佳答案

does the p.purchase() method fire the implemented method (for non-consumable IAPs), in the main class, below,

是的。 Android 将触发主类中的 itemPurchased() 方法。

应用内购买确实很难做好。 Google Play 方面有许多步骤需要完成,即使缺少一个步骤,也可能会导致无法正常工作。最好的策略是逐步测试。在模拟器中进行测试,以确保您的工作流程正常运行并且收据已正确提交到您的云数据库。

然后您需要在实际的 Android 设备上进行测试。在 Play 商店中创建内部版本,并将自己设置为测试人员,以便您可以使用“测试/虚拟”信用卡进行购买并确保流程正常运行。 This page包括有关此测试过程的一些说明。重要步骤是:

  1. 创建内部 Alpha 版本。
  2. 将您自己添加到该版本的 Alpha 测试人员列表中。
  3. 将您自己添加到您的 Google 开发者帐户中的“许可证测试人员”列表(这与 Alpha 测试人员列表不同)。
  4. 在您的设备上安装内部/测试版本。
  5. 尝试进行购买,并确保执行所有步骤/回调。

我通常将 System.out.println 语句放入我的所有购买回调方法中,以帮助在测试时跟踪进度。然后我可以检查我的设备日志以查看是否/何时/哪个回调被调用。

不要让您的用户测试 IAP,因为墨菲定律在 IAP 中发挥着重要作用。

关于CN1 中 Android IAP 非消耗品购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847310/

相关文章:

codenameone - 如何以代号一访问网络服务器上的 sqlite 数据库

android - 我怎样才能在 android 2.1 中获得特定联系人的正确 Uri

android - 多色边框EditText

php - Openssl RSA加密-解密

ios - 代号一个 iOS 构建在服务器上失败 - 多个主要类

java - Component.CENTER 不适用于 Tablelayout(特别是使用 CODENAMEONE)

JAVA - 将 Android 应用程序转换为 fragment 样式应用程序

android - 在 cordova 5.2 中传递 config.xml 的问题

ios - Codename One(或 ParparVM)如何将 Java 库编译成 iOS 库

android - 如何使用 Codename One 测试 Android native 代码 fragment ?