我正在嘗試在我的應用中使用Dungeons示例。在Android開發指南中寫道,我應該確認發送產品給用戶,向市場發送CONFIRM_NOTIFICATIONS,但是我沒有在例子中看到它,或者我錯了嗎?我應該確認下載並且我的應用程序應該記住內容是否已成功傳送?Android應用內結算,如何確認該產品已下載
哪裏是最好的地方來調用下載,在使用AsyncTask的活動中,在ResponseHandler類或不同?
我正在嘗試在我的應用中使用Dungeons示例。在Android開發指南中寫道,我應該確認發送產品給用戶,向市場發送CONFIRM_NOTIFICATIONS,但是我沒有在例子中看到它,或者我錯了嗎?我應該確認下載並且我的應用程序應該記住內容是否已成功傳送?Android應用內結算,如何確認該產品已下載
哪裏是最好的地方來調用下載,在使用AsyncTask的活動中,在ResponseHandler類或不同?
我希望以下代碼可以幫助你。
@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();
}
在日誌中,如果您收到「已購買的商品」,則表示您已成功下載該商品。
這是我今天一直想知道的。根據我所看到的,在Dungeons示例中,當調用BillingService#purchaseStateChanged
時,它會在驗證購買之後自動確認所有通知。
參見線506-509中的示例BillingService.java:
if (!notifyList.isEmpty()) {
String[] notifyIds = notifyList.toArray(new String[notifyList.size()]);
confirmNotifications(startId, notifyIds);
}
該解決方案將呈現爲搬遷這個邏輯,當你完成你的內容的傳送,你可以手動調用的地方。
我打算刪除該代碼,並將BillingService#confirmNotifications
公開,所以我可以在我交付內容時從我的PurchaseObserver
實現中調用它。
我會更新結果,但它似乎是一個很好的起點。
我做了`BillingService#confirmNotifications` public,我在`PurchaseObserver#onPurchaseStateChange`上添加了兩個參數`startId,notifyIds`,應用程序似乎工作正常。我會很快測試它。所以謝謝你的建議!如果您有關於下載或確認內容交付的其他任何觀察,請與我分享。 – niewybuch 2011-12-25 14:49:50
謝謝,我知道這個代碼。我不知道如何提交產品,因爲下載時可能會出現問題。 – niewybuch 2011-12-16 12:30:09