Android が提供する Dungeons の例から作業していますが、ほぼ正しく理解できたように感じますが、ユーザーが [戻る] ボタンを押して購入を取り消したかどうかを検出する方法がわかりません。これが私がこれまでに持っているものです:
Button buy = (Button)findViewById(R.id.buy);
buy.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
try
{
if (mBillingService.requestPurchase(issueProductId,
Consts.ITEM_TYPE_INAPP , null))
{
// Not sure what to do here. Has the person been sent to the buy screen yet or no?
// There are these strings I need to check for but not entirely certain how:
if(mBillingService.checkBillingSupported(Consts.ITEM_TYPE_INAPP))
{
// OK
}
else
{
// If billing is not supported, give them the item for free
Intent myIntent = new Intent(ExtraHelpActivity.this, PsychologyActivity.class);
ExtraHelpActivity.this.startActivity(myIntent);
}
try
{
if (mBillingService.requestPurchase(issueProductIdPsych,
Consts.ITEM_TYPE_INAPP , null))
{
// HOW DO I CHECK HERE IF THE USER CANCELED OUT OF THE PURCHASE?
// EVEN ON CANCEL, THEY ARE BEING TAKEN TO THE ITEM THAT THEY NEED TO PAY FOR.
// Send them to the screen of the article.
Intent myIntent = new Intent(ExtraHelpActivity.this, PsychologyActivity.class);
ExtraHelpActivity.this.startActivity(myIntent);
}
}
catch ( Exception e )
{
// Report exception.
}
});
混乱しているインラインコメントをいくつか追加しました。その人が商品を購入したのか、キャンセルしたのか、読み方がわかりません。誰かがこれで私を助けることができれば、それは素晴らしいことです.
現在、このコードによって購入画面が表示され、購入する人もいますが、キャンセルを押すと、購入していない商品に移動します。:)
編集:
ちなみに、ユーザーが購入済みのアイテムに戻ってきた場合、購入リクエストの状態は変化しませんよね?では、最終的にどのメソッドがトリガーされるのでしょうか? 1回の購入でテストしたところ、記事のある1つの画面へのアクセスを購入できましたが、支払い画面でそのアイテムを既に購入したことが示され、次のページに移動しないため、再びアクセスできなくなりました.
私の新しい onStateChanged メソッドは次のようになります。
@Override
public void onPurchaseStateChange(PurchaseState purchaseState, String itemId,
int quantity, long purchaseTime, String developerPayload)
{
if (purchaseState == PurchaseState.PURCHASED)
{
mOwnedItems.add(itemId);
if ( itemId != null && itemId.trim().equals("3") )
{
Intent myIntent = new Intent(ExtraHelpActivity.this, PsychologyActivity.class);
ExtraHelpActivity.this.startActivity(myIntent);
}
if ( itemId != null && itemId.trim().equals("4") )
{
Intent myIntent = new Intent(ExtraHelpActivity.this, NumberOfBusinessesActivity.class);
}
}
else
if (purchaseState == PurchaseState.CANCELED)
{
// purchase canceled
}
else
if (purchaseState == PurchaseState.REFUNDED)
{
// user ask for a refund
}
else
{
if ( itemId != null && itemId.equals("3") )
{
Intent myIntent = new Intent(ExtraHelpActivity.this, PsychologyActivity.class);
ExtraHelpActivity.this.startActivity(myIntent);
}
if ( itemId != null && itemId.equals("4") )
{
Intent myIntent = new Intent(ExtraHelpActivity.this, NumberOfBusinessesActivity.class);
ExtraHelpActivity.this.startActivity(myIntent);
}
}
}
そして、私がそれをテストして記事を購入したときif (purchaseState == PurchaseState.PURCHASED)
、itemId idが「3」または「4」であっても、その中にある場合は個人ではなく、個人には届きました
編集:
これは、アクティビティの開始時に製品 ID を宣言する方法です。
String issueProductIdWebMarketing = "1";
String issueProductIdDonate = "2";
String issueProductIdPsych = "3";
String issueProductIdNumberofBusinesses = "4";
ありがとう!!