【问题标题】:Gdx-Pay check for purchasesGdx-支付支票购买
【发布时间】:2015-09-03 11:51:23
【问题描述】:

我已经完成了 IAP 系统的设置,但我不知道如何检查用户是否真的拥有/购买了某种产品。 使用适用于 android 的 Google IAP Billing 我只是这样做了:

Purchase ITEM_1 = inventory.getPurchase(ITEM_1);
if(ITEM_1 != null && verifyDeveloperPayload(ITEM_1)){
//Give user the product
ITEM_1_BOUGHT = true;
}

我在 Gdx-Pay 中找不到等效的方法。

【问题讨论】:

    标签: ios libgdx in-app-purchase


    【解决方案1】:

    PurchaseObserver 有一个方法叫做:handleRestore(Transaction[] transactions)

    您可以遍历事务:

    @Override
    public void handleRestore(Transaction[] transactions) {
        for (int i = 0; i < transactions.length; i++) {
            // do something with all bought products.
    
            if (transactions[i].getIdentifier().equals("YOUR_PRODUCT_IDENTIFIER")) {
                // do something with a certain product
            }
        }
    }
    

    【讨论】:

    • 谢谢!这就是我要找的。但是,该方法仅在 PurchaseSystem.purchaseRestore(); 时调用。如果我没记错的话?
    • 是的,我想是的。我认为在后台确实如此:inventory.getPurchases();
    • 嗯,你看这会带来问题。由于 Apple 命令您在按钮上而不是在每次启动时都有恢复方法,因此用户必须在每次进入应用程序时手动恢复购买(在该按钮上)才能获得对其购买的访问权限。你明白我的意思吗?
    • 是的,但我没有看到问题所在。首次购买或恢复后,保存用户购买的内容。不要总是在每次启动时都使用恢复方法。从您保存的值中加载。
    • @TomGrillGames 在偏好中保存购买状态似乎不安全?也许这不是你的意思?因为任何人都可以编辑它。
    【解决方案2】:

    有一个父方法 getInformation() 没有在任何示例中展示。您需要在抽象的 PlatformResolver 中覆盖它,例如

      public Information getInformation(String identifier){
        return mgr.getInformation(identifier);
      }
    

    然后在您的游戏类中,您需要检查购买是否存在,例如:

       Information info = getPlatformResolver().getInformation(productId);
       String getName = info.getLocalName();
        if(getName == null)
            getPlatformResolver().requestPurchase(productId);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-03
      • 2023-03-14
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      相关资源
      最近更新 更多