2013-05-11 6 views
11

Ich habe erfolgreich in App-Abrechnung in meine App implementiert, die alles gut funktioniert. Ich versuche nun, den Preis der Artikel (in der Entwicklerkonsole festgelegt) abzurufen, damit ich diese Preise in meiner App ohne Festcodierungswerte wiedergeben kann.In App Billing getPrice() Android

Dieser Code ganz offensichtlich nur die Preise der Gegenstände sammelt bereits durch das Inventar gekauft, die nicht das, was ich suche ist:

SkuDetails gasDetails = inventory.getSkuDetails(SKU_FULL);  

      if (gasDetails != null){ 
       alert("Gas is " + gasDetails.getPrice());} 

ich für den Kauf eines der docs abfragt Artikel ausgesehen haben zur Verfügung, aber kämpfen, um es verstehen. Ich hätte gedacht, dass die Helper-Klasse eine Art von Get-Price-Methode implementiert hätte.

Also, meine Frage: Kann mir jemand in die richtige Richtung zeigen?

Antwort

4

Ok, ich habe die Lösung gefunden. Ich habe die Entwickler-Dokumentation entschlüsselt und es scheint, dass darin Fehler aufgetreten sind.

Dies ist meine Lösung innerhalb IabHelper erstellt:

public String getPricesDev(String packageName) throws RemoteException, JSONException{ 


     ArrayList<String> skuList = new ArrayList<String>(); 
     skuList.add("full.discount.fetch"); 
     skuList.add("gas"); 
    Bundle querySkus = new Bundle(); 
    querySkus.putStringArrayList("ITEM_ID_LIST", skuList); 

    Bundle skuDetails = mService.getSkuDetails(3,packageName, "inapp", querySkus); 


    int response = skuDetails.getInt("RESPONSE_CODE"); 
    if (response == 0) { 
     ArrayList<String> responseList 
      = skuDetails.getStringArrayList("DETAILS_LIST"); 

     for (String thisResponse : responseList) { 
      JSONObject object = new JSONObject(thisResponse); 
      String sku = object.getString("productId"); 
      String price = object.getString("price"); 

      if(sku.contains("full.discount.fetch")) return price; 

     } 
    } 
    return "Not found"; 


} 
9

Wenn Sie die Implementierung in der „TrivialDrive“ Probe von Google vorgeschlagen verwenden, können Sie die Informationen aller skus abrufen kann (auch wenn sie nicht gekauft werden) durch den Paramater "Details" und "moreSkus" in der Methode true vorbei, die das Inventar

/** 
* Queries the inventory. This will query all owned items from the server, as well as 
* information on additional skus, if specified. This method may block or take long to execute. 
* Do not call from a UI thread. For that, use the non-blocking version {@link #refreshInventoryAsync}. 
* 
* @param querySkuDetails if true, SKU details (price, description, etc) will be queried as well 
*  as purchase information. 
* @param moreItemSkus additional PRODUCT skus to query information on, regardless of ownership. 
*  Ignored if null or if querySkuDetails is false. 
* @param moreSubsSkus additional SUBSCRIPTIONS skus to query information on, regardless of ownership. 
*  Ignored if null or if querySkuDetails is false. 
* @throws IabException if a problem occurs while refreshing the inventory. 
*/ 
public Inventory queryInventory(boolean querySkuDetails, List<String> moreItemSkus, 
            List<String> moreSubsSkus) throws IabException { 
fragt
Verwandte Themen