In-App Billing(アプリ内課金)のAPIが更新されました。
Android Developersで紹介されています。
In-App Billing Version 3 | Android Developers Blog
新規機能や変更点をご紹介。
In-App Billing API Version 3
In-App Billingは2012年12月10日に機能の拡張をいたしました。パワフルで自由度の高いAPIへ変更し、ディベロッパーはさらにアプリでの成功を収められるでしょう。In-App Billing API version 3での変更点は、
- コードのデザインを変更し、書きやすく、デバッグしやすく、メンテナンスしやすくなりました。以前まではIn-App Billingを組み込むのに100行以上も書く必要がありましたが、約50行まで抑える事に成功しました。
- より健全なアーキテクチャに変更し、トランザクションの失敗が少なくなりました。
- ローカルキャッシュを組み込み、APIコールが早くなりました。
- 購入情報の管理や、商品情報の参照など、待ち望まれていた機能の追加をしました。
In-App Billing version 3はアプリ内課金を使うすべてのアプリで使えるようになりますが、月額課金はまだ対応していませんので、もう少しお待ちください。In-App Billing API v3はAndroid2.2以降の最新のGoogle Play storeが入っている端末で対応しております。
以前のバージョンでは4つの非同期処理を使っていましたが、最新バージョンでは、リクエストを1つのActivity内で同期処理のように扱う事が出来るようになりました。また、すべての処理は数行のコードで出来るようになり、組み込みに掛かる手間を減らす事が出来ました。これにより、In-App Billingを使うすべてのユーザに素晴らしい機会を提供出来るようになりました。
簡単な組み込み方法
以前までのバッググラウンドサービスで処理する非同期モデルに比べ、新しいAPIは同期処理で、早くアプリへ結果を返すようになりました。アプリへ組み込む複雑な手順を取り除き、素晴らしく簡素に書けるようになりました。
アイテムを購入するには、APIから購入インテントを入手するところから始まります。
Bundle bundle = mService.getBuyIntent(3, "com.example.myapp", MY_SKU, ITEM_TYPE_INAPP, developerPayload); PendingIntent pendingIntent = bundle.getParcelable(RESPONSE_BUY_INTENT); if (bundle.getInt(RESPONSE_CODE) == BILLING_RESPONSE_RESULT_OK) { // Start purchase flow (this brings up the Google Play UI). // Result will be delivered through onActivityResult(). startIntentSenderForResult(pendingIntent, RC_BUY, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0)); }
その後、購入結果がonActivityResult()に返ってきます。
public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RC_BUY) { int responseCode = data.getIntExtra(RESPONSE_CODE); String purchaseData = data.getStringExtra(RESPONSE_INAPP_PURCHASE_DATA); String signature = data.getStringExtra(RESPONSE_INAPP_SIGNATURE); // handle purchase here (for a permanent item like a premium upgrade, // this means dispensing the benefits of the upgrade; for a consumable // item like "X gold coins", typically the application would initiate // consumption of the purchase here) } }
また、以前と違い、すべての購入情報はGoogle Playで管理されています。なので、アイテムの所有権の確認はいつでも出来るようになりました。
以下、ローカルキャッシュ、商品情報、アプリサンプル等と続きますが、
続きは元サイトでご確認ください。
In-App Billing Version 3 | Android Developers Blog
startIntentSenderForResult後の、onActivityResultが呼ばれません
返信削除他のサイトを見ても同じように説明していますが
呼ばれない原因は何かありますでしょうか?
実際の購入はできております。
startIntentSenderForResultはFragmentで呼んでますか?Activityで呼んでますか?
削除http://stackoverflow.com/questions/14131171/calling-startintentsenderforresult-from-fragment-android-billing-v3