SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Androidのアプリ内課金
Report
Kenji Seto
Follow
パナソニックAVCマルチメディアソフト(株)
Feb. 14, 2013
•
0 likes
•
12,009 views
1
of
34
Androidのアプリ内課金
Feb. 14, 2013
•
0 likes
•
12,009 views
Download Now
Download to read offline
Report
Androidのアプリ内課金(In-app Billing v3)について
Kenji Seto
Follow
パナソニックAVCマルチメディアソフト(株)
Recommended
Androidアプリに課金コンテンツを導入
HIROKI HONDA
1.1K views
•
27 slides
課金アプリの作り方(高畑)
Masahide Takahata
6.2K views
•
13 slides
Unity In App Purchase (IAP)の使い方
Makoto Ito
21.9K views
•
36 slides
OpManager導入事例 日テレITプロデュース様
ManageEngine, Zoho Corporation
985 views
•
13 slides
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DeNA
5.4K views
•
74 slides
アプリ内課金の現状と未来
Issei Kuwada
6.8K views
•
40 slides
More Related Content
Similar to Androidのアプリ内課金
Android sdk manual_1.02
Tomohiro Kondo
324 views
•
8 slides
Android sdk manual_1.02
Tomohiro Kondo
382 views
•
8 slides
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
Masahiro Hidaka
5.1K views
•
82 slides
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
Google Cloud Platform - Japan
3.3K views
•
29 slides
Ignite UI 2012 最新情報 jQuery Mobile 編
インフラジスティックス・ジャパン株式会社
2.5K views
•
30 slides
[DevSummit2013S]Android_Multi-Version_Multi-Device
Kenichi Kambara
1.9K views
•
30 slides
Similar to Androidのアプリ内課金
(20)
Android sdk manual_1.02
Tomohiro Kondo
•
324 views
Android sdk manual_1.02
Tomohiro Kondo
•
382 views
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
Masahiro Hidaka
•
5.1K views
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
Google Cloud Platform - Japan
•
3.3K views
Ignite UI 2012 最新情報 jQuery Mobile 編
インフラジスティックス・ジャパン株式会社
•
2.5K views
[DevSummit2013S]Android_Multi-Version_Multi-Device
Kenichi Kambara
•
1.9K views
サーバ構築不要!HTML5で始めるAndroid&iOSアプリ開発セミナー
SPIRAL Inc.
•
8.6K views
はじめての UWP アプリ開発
hiyohiyo
•
9K views
iPhoneアプリ「トリセツ」にて実践したリーンスタートアップ
Kenji Tomita
•
10.6K views
iPhoneアプリ「トリセツ」にて実践したリーンスタートアップ
VOYAGE GROUP
•
4.3K views
デブサミ2013【15-D-4】Opsから挑むDevOps
Developers Summit
•
2.8K views
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
Developers Summit
•
2.8K views
Firebase analytics for_android _ i_os
baroqueworksdev
•
1.1K views
Ignite ui 2012 最新情報 jQuery UI 編
Daizen Ikehara
•
1K views
市場動向並びに弊社製品の今後の展望について
Ken Azuma
•
1K views
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
AzareaCluster
•
891 views
2015年をRTBのアプリ広告元年とするために
Toshiaki Ishibashi
•
25K views
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Yoshihito Kuranuki
•
3.7K views
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
TIS Inc.
•
4.8K views
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Shotaro Suzuki
•
633 views
Androidのアプリ内課金
1.
Developers Summit
Androidのアプリ内課金 In-app Billing of Android 15-C-1 瀬戸 健二 パナソニックAVCマルチメディアソフ ト(株) Developers Summit 2013 Action !
2.
Developers Summit
自己紹介 Developers Summit 2013 Action !
3.
Developers Summit
自己紹介 • 瀬戸 健二(28) – パナソニックAVCマルチメディアソフト(株) – 航空機エンターテイメントシステム開発、 モバイルアプリ開発 – Android、Linux、マイコンなどが得意 – 元TechBoosterメンバー – Twitter • @rongon_xp Developers Summit 2013 Action !
4.
Developers Summit
Androidのアプリ内課金 Developers Summit 2013 Action !
5.
Developers Summit
本日のテーマ • アプリ内課金プログラミング完全ガイド では In-app Billing(IAB) v2について解説 • 発売直後にIABv3が発表・・・。 • 今日はIABv3について お話させて頂きます Developers Summit 2013 Action !
6.
Developers Summit
IABv3特徴 • 実装がとても簡単に。 – v2では100行以上、v3では50行程度に。 • 非同期処理の排除とローカルキャッシン グ – 高速なAPI実行が可能に。 – セキュリティ向上 • 購入情報の管理 • アイテム情報の参照 Developers Summit 2013 Action !
7.
Developers Summit
Androidアプリ内課金 - 概要 • Playストアサーバ上に存在する購入情報を更新す る • アプリからはPlayストアアプリを介してPlayスト アサーバにアクセスする 購入情報 Developers Summit 2013 Action !
8.
Developers Summit
IABv2の購入シーケンス Developers Summit 2013 Action !
9.
Developers Summit
IABv2のアプリ構成 • 課金リクエストを送信するためのサービス • 非同期メッセージを受け取るためのブロードキャストレ シーバ • アプリケーションに通知するためのレスポンスハンドラ と オブザーバ Developers Summit 2013 Action !
10.
Developers Summit
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.
Developers Summit
IABv3のアプリ構成 • 同期処理になったため、アプリ構成がシ ンプルになった Playストアアプリ アプリ本体 InAppBilling bind Service セキュリ ティ Developers Summit 2013 Action !
12.
Developers Summit
アイテムの購入 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()に返される @Override protected 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.
Developers Summit
アイテムの消費 Developers Summit 2013 Action !
16.
Developers Summit
アイテムの消費(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.
Developers Summit
トラブルシューティング Developers Summit 2013 Action !
19.
Developers Summit
うまく動かないとき(1) • テストアカウントを設定していない – Androidデバイスのプライマリアカウントに設 定 • 公開鍵をアプリに設定していない – Developer Consoleで取得可能 • Playストアにアプリ/課金アイテムを登録 した直後 – 反映されるのに数時間〜数日かかることがあ る Developers Summit 2013 Action !
20.
Developers Summit
うまく動かないとき(2) • アプリの署名が不正 – Playストアに登録している署名と一致してい る必要がある • アプリの公開設定 – 公開設定にすると動作する場合も・・・。 Developers Summit 2013 Action !
21.
Developers Summit
どちらを使えばいいのか? • v3は定期購読未サポート – アプリ内課金アイテムのみであればv3でok • 簡単に実装したいのであればv3 Developers Summit 2013 Action !
22.
Developers Summit • ご清聴ありがとうございました
Developers Summit 2013 Action !
23.
Developers Summit
参考資料 Developers Summit 2013 Action !
24.
Developers Summit
アイテムの販売形式 • 消耗型 – ゲーム上のお金、ポーションなど使用すると消耗してしまうも の • 非消耗型 – アプリ上の機能制限のアンロックなど、購入することで永続的 に効果が持続されるもの • 購読型 – 定期的な課金によって効果が持続されるもの Developers Summit 2013 Action !
25.
Developers Summit
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.
Developers Summit
購入シーケンス(IABv2) Developers Summit 2013 Action !
29.
Developers Summit
購入シーケンス(IABv3) 購入情報 購入情報 IABv3では不要 Developers Summit 2013 Action !
30.
Developers Summit
アイテム情報の参照(1) • 購入可能なアイテム情報を取得可能 – セール価格など簡単に実現 getSkuDetails() Bundle Play Your (RESPONSE_CODE, DETAILS_LIST) Store App App Developers Summit 2013 Action !
31.
Developers Summit
アイテム情報の参照(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.
Developers Summit
アイテムの消費(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 !