2016-07-13 16 views
4

私はゴミGoogleのチュートリアルに従ってきましたが、ユーザーの購入を復元するコードをどこに置くべきかは言及していません。 TDのチュートリアルでは、それは書いている:startSetup()方法でユーザーはアプリ内購入をどこに復元しますか?

try { 
    mHelper.queryInventoryAsync(mGotInventoryListener); 
} catch (IabAsyncInProgressException e) { 
    complain("Error querying inventory. Another async operation in progress."); 
} 

を、これは私がそれを置く場所を私が書くと何ですか?

+0

を復元する今までにこのコードを使用することができます。それはタイプミスですか? –

+0

いいえ、IAPのガイドはひどいので理にかなっていません。 –

答えて

0

ユーザーが行った購入に関する情報は、アプリの任意の場所で取得できます。

Bundle ownedItems = mService.getPurchases(3, getPackageName(), "inapp", null); 
int response = ownedItems.getInt("RESPONSE_CODE"); 
if (response == 0) { 
    ArrayList<String> ownedSkus = 
     ownedItems.getStringArrayList("INAPP_PURCHASE_ITEM_LIST"); 
    ArrayList<String> purchaseDataList = 
     ownedItems.getStringArrayList("INAPP_PURCHASE_DATA_LIST"); 
    ArrayList<String> signatureList = 
     ownedItems.getStringArrayList("INAPP_DATA_SIGNATURE_LIST"); 
    String continuationToken = 
     ownedItems.getString("INAPP_CONTINUATION_TOKEN"); 

    for (int i = 0; i < purchaseDataList.size(); ++i) { 
     String purchaseData = purchaseDataList.get(i); 
     String signature = signatureList.get(i); 
     String sku = ownedSkus.get(i); 

     // do something with this purchase information 
     // e.g. display the updated list of products owned by user 
    } 

    // if continuationToken != null, call getPurchases again 
    // and pass in the token to retrieve more items 
} 

あなたは笑*あなたが*ごみ、Googleのチュートリアルユーザーpurcahse

+0

私が言った方法は、推奨された方法ではないことを示しましたか?私はあなたがそれをした方法を見たが、古いガイドでそれを見た。 –

+0

getPurchases()は、購入した商品のバンドルを取得するためのAPIです。バンドルの使い方はあなた次第です。 – Han

+0

あなたが再応答する前に、私はonQueryを使って: 'Purchase lessonOnePurchase = inventory.getPurchase(SKU_bl1); isPurchased_basiclesson1 =(lessonOnePurchase!= null && verifyDeveloperPayload(lessonOnePurchase)); 'これは問題ですか? –

関連する問題