在CN1中购买Android IAP非消耗品

问题描述 投票:2回答:1

我的问题是,在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)来玩商店订阅产品'。

对于ref,我对android.nonconsumable的构建提示应该是正确的,因为它找到了Google Play IAP显示名称ok。用户在首次购买时不会报告任何错误。谢谢

android codenameone
1个回答
2
投票

p.purchase()方法是否触发实现的方法(对于非消耗性IAP),在下面的主类中,

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

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

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

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

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

不要让用户测试IAP,因为墨菲定律在IAP中运行良好。

© www.soinside.com 2019 - 2024. All rights reserved.