2011-12-16 9 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

1

これは私が今日も不思議に思っていたものです。私が見ることができるように、BillingService#purchaseStateChangedが呼び出されたDungeonsの例では、購入を確認した後、すべての通知を自動的に確認します。

参照ライン506から509は、一例ではBillingService.java:

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

ソリューションは、あなたのコンテンツの配信を完了したときに手動で呼び出すことができる場所に、このロジックを再配置するように見えます。

このコードを削除し、BillingService#confirmNotificationsを公開して、コンテンツを配信したときに私がPurchaseObserverの実装から呼び出せるようにする予定です。

私は結果を更新しますが、それは良い出発点と思われます。

+0

私は 'BillingService#confirmNotifications'を公開し、' PurchaseObserver#onPurchaseStateChange'に 'startId、notifyIds'という2つのパラメータを追加し、アプリケーションは正常に動作しているようです。私はもうすぐそれをテストします。だから助言をいただきありがとうございます!コンテンツ配信のダウンロードや確認に関する他の見解がある場合は、私と共有してください。 – niewybuch

関連する問題