Your SlideShare is downloading. ×
0
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Androidのアプリ内課金
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Androidのアプリ内課金

11,004

Published on

Androidのアプリ内課金(In-app Billing v3)について

Androidのアプリ内課金(In-app Billing v3)について

0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
11,004
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
40
Comments
0
Likes
13
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. DevelopersSummit Androidのアプリ内課金 In-app Billing of Android15-C-1 瀬戸 健二 パナソニックAVCマルチメディアソフ ト(株) Developers Summit 2013 Action !
  • 2. DevelopersSummit 自己紹介 Developers Summit 2013 Action !
  • 3. Developers Summit 自己紹介• 瀬戸 健二(28) – パナソニックAVCマルチメディアソフト(株) – 航空機エンターテイメントシステム開発、 モバイルアプリ開発 – Android、Linux、マイコンなどが得意 – 元TechBoosterメンバー – Twitter • @rongon_xp Developers Summit 2013 Action !
  • 4. DevelopersSummit Androidのアプリ内課金 Developers Summit 2013 Action !
  • 5. DevelopersSummit 本日のテーマ• アプリ内課金プログラミング完全ガイド では In-app Billing(IAB) v2について解説• 発売直後にIABv3が発表・・・。• 今日はIABv3について お話させて頂きます Developers Summit 2013 Action !
  • 6. DevelopersSummit IABv3特徴• 実装がとても簡単に。 – v2では100行以上、v3では50行程度に。• 非同期処理の排除とローカルキャッシン グ – 高速なAPI実行が可能に。 – セキュリティ向上• 購入情報の管理• アイテム情報の参照 Developers Summit 2013 Action !
  • 7. DevelopersSummit Androidアプリ内課金 - 概要• Playストアサーバ上に存在する購入情報を更新す る• アプリからはPlayストアアプリを介してPlayスト アサーバにアクセスする 購入情報 Developers Summit 2013 Action !
  • 8. DevelopersSummit IABv2の購入シーケンス Developers Summit 2013 Action !
  • 9. DevelopersSummit IABv2のアプリ構成• 課金リクエストを送信するためのサービス• 非同期メッセージを受け取るためのブロードキャストレ シーバ• アプリケーションに通知するためのレスポンスハンドラ と オブザーバ Developers Summit 2013 Action !
  • 10. DevelopersSummit IABv3の購入シーケンス getBuyIntent() Bundle (RESPONSE_CODE, BUY_INTENT) Play Your Store App startIntentSenderForResult() App IAB API Bundle (RESPONSE_CODE, INAPP_PURCHASE_DATA, 同期レスポンス INAPP_SIGNATURE) Developers Summit 2013 Action !
  • 11. DevelopersSummit IABv3のアプリ構成• 同期処理になったため、アプリ構成がシ ンプルになった Playストアアプリ アプリ本体 InAppBilling bind Service セキュリ ティ Developers Summit 2013 Action !
  • 12. DevelopersSummit アイテムの購入 Developers Summit 2013 Action !
  • 13. Developers Summit アイテムの購入(1)• IInAppBillingService.getBuyIntent()で購入画面を起 動// 購入画面を起動するためのインテントを取得Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(), sku, "inapp", "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");PendingIntent pendingIntent =buyIntentBundle.getParcelable("BUY_INTENT");// インテントを使って購入画面を起動するstartIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0)); Developers Summit 2013 Action !
  • 14. Developers Summit アイテムの購入(2)• 購入結果はonActivityResult()に返される@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == mRequestCode) { int responseCode = data.getIntExtra("RESPONSE_CODE", 0); String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA"); String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE"); if (resultCode == RESULT_OK) { // 購入処理 } }} Developers Summit 2013 Action !
  • 15. DevelopersSummit アイテムの消費 Developers Summit 2013 Action !
  • 16. DevelopersSummit アイテムの消費(1)• IABv3ではすべての購入情報がPlayストア サーバで管理• 消費しないと再購入できない – 消費型 : 購入が完了したら消費処理を実施 – 非消費型 : 購入が完了しても消費処理をしな い Developers Summit 2013 Action !
  • 17. Developers Summit アイテムの消費(2)• 消費型アイテムの場合はconsumePurchaseを実行 することで再購入できるようにする• INAPP_PURCHASE_DATAに含まれている purchaseTokenを指定するint response = mService.consumePurchase(3, getPackageName(),purchaseToken); Developers Summit 2013 Action !
  • 18. DevelopersSummit トラブルシューティング Developers Summit 2013 Action !
  • 19. DevelopersSummit うまく動かないとき(1)• テストアカウントを設定していない – Androidデバイスのプライマリアカウントに設 定• 公開鍵をアプリに設定していない – Developer Consoleで取得可能• Playストアにアプリ/課金アイテムを登録 した直後 – 反映されるのに数時間〜数日かかることがあ る Developers Summit 2013 Action !
  • 20. DevelopersSummit うまく動かないとき(2)• アプリの署名が不正 – Playストアに登録している署名と一致してい る必要がある• アプリの公開設定 – 公開設定にすると動作する場合も・・・。 Developers Summit 2013 Action !
  • 21. DevelopersSummit どちらを使えばいいのか?• v3は定期購読未サポート – アプリ内課金アイテムのみであればv3でok• 簡単に実装したいのであればv3 Developers Summit 2013 Action !
  • 22. DevelopersSummit• ご清聴ありがとうございました Developers Summit 2013 Action !
  • 23. DevelopersSummit 参考資料 Developers Summit 2013 Action !
  • 24. DevelopersSummit アイテムの販売形式• 消耗型 – ゲーム上のお金、ポーションなど使用すると消耗してしまうも の• 非消耗型 – アプリ上の機能制限のアンロックなど、購入することで永続的 に効果が持続されるもの• 購読型 – 定期的な課金によって効果が持続されるもの Developers Summit 2013 Action !
  • 25. DevelopersSummit IABv3 Sample App Developers Summit 2013 Action !
  • 26. Developers Summit IABv3 Sample App• サンプルアプリケーションをダウンロード – Extras -> Google Play Billing Library• Eclipseにインポート• サンプルアプリを修正 – パッケージ名を変更 – 公開鍵を設定• アプリをPlayストアにアップロード• アップロードしたapkをadb install Developers Summit 2013 Action !
  • 27. Developers Summit INAPP_PURCHASE_DATA• Playストアより得られる購入情報02-11 10:27:39.908: D/IabHelper(7688): Extras:Bundle[{INAPP_PURCHASE_DATA={"orderId":"12999763169054705758.1368594429841055","packageName":"org.dyndns.ideon.trivialdrivesample","productId":"gas","purchaseTime":1360578449000,"purchaseState":0,"purchaseToken":"w…,RESPONSE_CODE=0}] Developers Summit 2013 Action !
  • 28. DevelopersSummit 購入シーケンス(IABv2) Developers Summit 2013 Action !
  • 29. DevelopersSummit 購入シーケンス(IABv3) 購入情報 購入情報 IABv3では不要 Developers Summit 2013 Action !
  • 30. DevelopersSummit アイテム情報の参照(1)• 購入可能なアイテム情報を取得可能 – セール価格など簡単に実現 getSkuDetails() Bundle Play Your (RESPONSE_CODE, DETAILS_LIST) Store App App Developers Summit 2013 Action !
  • 31. DevelopersSummit アイテム情報の参照(2)• getSkuDetails()でアイテム情報を参照// サービスIDのリストを作成ArrayList skuList = new ArrayList();skuList.add("premiumUpgrade");skuList.add("gas");Bundle querySkus = new Bundle();querySkus.putStringArrayList(“ITEM_ID_LIST”, skuList);// アイテム情報を取得Bundle skuDetails = mService.getSkuDetails(3, getPackageName(), “inapp”,querySkus); Developers Summit 2013 Action !
  • 32. Developers Summit アイテム情報の参照(3)• アイテムの価格を取得するint response = skuDetails.getInt("RESPONSE_CODE");if (response == 0) { ArrayList responseList = skuDetails.getStringArrayList("DETAILS_LIST"); for (String thisResponse : responseList) { JSONObject object = new JSONObject(thisResponse); String sku = object.getString("productId"); String price = object.getString("price"); if (sku.equals(“premiumUpgrade”)) mPremiumUpgradePrice = price; else if (sku.equals(“gas”)) mGasPrice = price; }} Developers Summit 2013 Action !
  • 33. DevelopersSummit アイテムの消費(1)• 消費しないと再購入できない – 消費型 : 購入が完了したら消費処理を実施 – 非消費型 : 購入が完了しても消費処理をしな い getPurchase() Bundle (INAPP_PURCHASE_ITEM_LIST, etc) Play Your consumePurchase() Store App App SUCCESS/FAILURE Developers Summit 2013 Action !
  • 34. Developers Summit Playストアからの非同期レスポンス(IABv2)• com.android.vending.billing.RESPONSE_CODE – レスポンス• com.android.vending.billing.IN_APP_NOTIFY – Playストアサーバ上にある購入情報が更新されたことを示す• com.android.vending.billing.PURCHASE_STATE_CHANGED – 1つ以上のトランザクション情報 Developers Summit 2013 Action !

×