2011-12-16 65 views
3

我正在嘗試在我的應用中使用Dungeons示例。在Android開發指南中寫道,我應該確認發送產品給用戶,向市場發送CONFIRM_NOTIFICATIONS,但是我沒有在例子中看到它,或者我錯了嗎?我應該確認下載並且我的應用程序應該記住內容是否已成功傳送?Android應用內結算,如何確認該產品已下載

哪裏是最好的地方來調用下載,在使用AsyncTask的活動中,在ResponseHandler類或不同?

回答

0

我希望以下代碼可以幫助你。

@Override 
    public void onPurchaseStateChange(PurchaseState purchaseState, String itemId, 
      int quantity, long purchaseTime, String developerPayload) { 
     if (Consts.DEBUG) { 
      Log.i(TAG, "onPurchaseStateChange() itemId: " + itemId + " " + purchaseState); 
     } 

     if (developerPayload == null) { 
      logProductActivity(itemId, purchaseState.toString()); 
     } else { 
      logProductActivity(itemId, purchaseState + "\n\t" + developerPayload); 
     } 

     if (purchaseState == PurchaseState.PURCHASED) { 
      mOwnedItems.add(itemId); 

      Log.v("log_tag", "Item Purchased"); 

     } 
     mCatalogAdapter.setOwnedItems(mOwnedItems); 
     mOwnedItemsCursor.requery(); 
    } 

在日誌中,如果您收到「已購買的商品」,則表示您已成功下載該商品。

+0

謝謝,我知道這個代碼。我不知道如何提交產品,因爲下載時可能會出現問題。 – niewybuch 2011-12-16 12:30:09

1

這是我今天一直想知道的。根據我所看到的,在Dungeons示例中,當調用BillingService#purchaseStateChanged時,它會在驗證購買之後自動確認所有通知。

參見線506-509中的示例BillingService.java:

if (!notifyList.isEmpty()) { 
    String[] notifyIds = notifyList.toArray(new String[notifyList.size()]); 
    confirmNotifications(startId, notifyIds); 
} 

該解決方案將呈現爲搬遷這個邏輯,當你完成你的內容的傳送,你可以手動調用的地方。

我打算刪除該代碼,並將BillingService#confirmNotifications公開,所以我可以在我交付內容時從我的PurchaseObserver實現中調用它。

我會更新結果,但它似乎是一個很好的起點。

+0

我做了`BillingService#confirmNotifications` public,我在`PurchaseObserver#onPurchaseStateChange`上添加了兩個參數`startId,notifyIds`,應用程序似乎工作正常。我會很快測試它。所以謝謝你的建議!如果您有關於下載或確認內容交付的其他任何觀察,請與我分享。 – niewybuch 2011-12-25 14:49:50

相關問題