亚马逊说 PurchasingService.getPurchaseUpdates() 没有被 libgdx 项目调用

Amazon says PurchasingService.getPurchaseUpdates() not being called from libgdx project

我正在尝试使用 class PurchaseManagerAndroidAmazon 来处理我的 libdx 项目的购买。以下是从核心项目中访问 android 方法的接口:

public void createPurchaseSystem();
public void getPurchaseUpdates();
public void getUserInformation(); 
public void purchaseItem(String id);

这些是 AndroidApplication 中的实际方法:

PurchaseManagerAndroidAmazon pm;

@Override
protected void onResume() {
    Log.d(TAG, "onResume");

    if(pm != null) {
        getUserInformation();
        getPurchaseUpdates();
    }

    super.onResume();
}

@Override
public void purchaseItem(String id) {
    Log.d(TAG, "purchaseItem");

    pm.purchase(id);
}

@Override
public void getUserInformation() {
    Log.d(TAG, "getUserInformation");

    if(pm == null)
        createPurchaseSystem();

    PurchasingService.getUserData();
}

@Override
public void getPurchaseUpdates() {
    Log.d(TAG, "getPurchaseUpdates");

    if(pm == null)
        createPurchaseSystem();

    PurchasingService.getPurchaseUpdates(true);
}

@Override
public void createPurchaseSystem() {
    Log.d(TAG, "createPurchaseSystem");

    if(pm == null)
        pm = new PurchaseManagerAndroidAmazon(this, 0);

    PurchaseManagerConfig config = new PurchaseManagerConfig();
    config.addOffer(new Offer().setType(OfferType.CONSUMABLE).setIdentifier(getString(R.string.min_id)));
    config.addOffer(new Offer().setType(OfferType.CONSUMABLE).setIdentifier(getString(R.string.med_id)));
    config.addOffer(new Offer().setType(OfferType.CONSUMABLE).setIdentifier(getString(R.string.max_id)));

    pm.install(new PurchaseObserver() {
        @Override
        public void handleInstall() {
            Log.d(TAG, "PurchaseSystem installed");
            PurchaseSystem.purchaseRestore();
        }

        @Override
        public void handleInstallError(Throwable err) {
            Log.e(TAG, "ERROR PurchaseObserver: handleInstallError!: " + err.getMessage());
            throw new GdxRuntimeException(err);
        }

        @Override
        public void handlePurchase(Transaction transaction) {
            Log.d(TAG, "PurchaseSystem handlePurchase: " + transaction.toString());

            pm.purchaseRestore();
        }

        @Override
        public void handlePurchaseCanceled() {
            Log.d(TAG, "PurchaseSystem handlePurchaseCanceled");
        }

        @Override
        public void handlePurchaseError(Throwable err) {
            Log.d(TAG, "ERROR PurchaseObserver: handlePurchaseError!: " + err.getMessage());
            throw new GdxRuntimeException(err);
        }

        @Override
        public void handleRestore(Transaction[] transactions) {
            Log.d(TAG, "PurchaseSystem handleRestore: " + transactions.toString());
        }

        @Override
        public void handleRestoreError(Throwable err) {
            Log.d(TAG, "ERROR PurchaseObserver: handleRestoreError!: " + err.getMessage());
            throw new GdxRuntimeException(err);
        }
    }, config, true);
}

这是核心项目:

HighPoint highPoint; // this class extends Game of libgdx

public void createDonationScreen() {

    if(!purchaseSytemCreated)
        createPurchaseSystem();

    TextButton minDonButton = new TextButton(....);
    medDonButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            highPoint.hpaInterface.getPurchaseUpdates();
            highPoint.hpaInterface.purchaseItem(MIN_ID);
        }
    });

使用 Amazon App Tester 时出现错误

failed to call PurchasingService.getPurchaseUpdates()

但是你可以看出它被多次调用。我觉得我实际上投入了太多次。当我点击按钮时,亚马逊对话框会弹出要求我确认购买,所以看起来它应该可以正常工作。

如有任何想法,我们将不胜感激。

在 activity onResume 回调中添加对 PurchasingService.getPurchaseUpdates(false) 的调用解决了我的通知问题。