2016-05-14 17 views
0

我試圖使用類PurchaseManagerAndroidAmazon來處理我的libdx項目的採購。以下是從核心項目中訪問的Android方法界面中:亞馬遜說purchasesingService.getPurchaseUpdates()沒有從libgdx項目調用

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); 
     } 
    }); 

使用亞馬遜應用測試儀給我的錯誤

沒有打電話PurchasingService.getPurchaseUpdates()

但你可以告訴它被調用多張倍。我覺得我已經投入了太多次。當我點擊按鈕時,亞馬遜對話框彈出,要求我確認購買,看起來它應該以任何方式工作。

任何想法將不勝感激。

回答

0

添加呼叫PurchasingService.getPurchaseUpdates(false)在活動onResume回調解決了我的情況通知問題。