2016-05-14 2 views
0

Ich versuche, die Käufe PurchaseManagerAndroidAmazon Käufe für meine libdx Projekt zu behandeln. Im Folgenden wird in der Schnittstelle, um die Android-Methoden für den Zugriff aus dem Kernprojekt:Amazon sagt PurchasingService.getPurchaseUpdates() nicht von libgdx Projekt

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

Dies sind die eigentlichen Methoden im 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); 
} 

Und das ist im Kernprojekt:

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

Mit dem Amazon App-Tester gibt mir den Fehler

fehlgeschlagen PurchasingService.getPurchaseUpdates()

aber wie man sagen kann, nennen seine wobei mulitple mal aufgerufen. Ich habe das Gefühl, dass ich tatsächlich zu oft reingelegt habe. Der Amazon-Dialog erscheint und fordert mich auf, den Kauf zu bestätigen, wenn ich auf den Button klicke, so als ob er so oder so funktionieren sollte.

Alle Ideen würden sehr geschätzt werden.

Antwort

0

Hinzufügen von Anruf an PurchasingService.getPurchaseUpdates(false) in Aktivität onResume Callback löste das Benachrichtigungsproblem in meinem Fall.

Verwandte Themen