Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Androidのアプリ内課金をAACで実装する
Search
syarihu
April 10, 2019
Programming
19k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Androidのアプリ内課金をAACで実装する
In-tamachi Billing Nightで発表した資料です。
https://billing-night.connpass.com/event/125510/
syarihu
April 10, 2019
More Decks by syarihu
See All by syarihu
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
210
Recap #io25 What's new in Google Play
syarihu
0
150
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
4
5.2k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
140
[shibuya.apk #41] Jetpack Composeでグリッドに柔軟にスペースを入れたい
syarihu
0
3.6k
[DroidKaigi 2022] 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
syarihu
0
4k
5分で分かるGoogle Playの新しいサブスクリプション / Google Play new subscription 2022
syarihu
1
2k
[DroidKaigi 2021] Google Play 定期購入 比例配分モード完全攻略ガイド / Google Play Subscription Proration Mode Complete Guide
syarihu
1
8.2k
[Money Forward Tech Drive] What's new in Google Play [Recap #io21]
syarihu
0
660
Other Decks in Programming
See All in Programming
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
490
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
240
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
220
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
580
typoなんかねぇよ
raspython3
0
630
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
560
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
400
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
2
860
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
120
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
850
VibeCodingからAgenticWorkflowへ
starfish719
0
1k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
140
Featured
See All Featured
A Soul's Torment
seathinner
7
3.5k
First, design no harm
axbom
PRO
2
1.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Tell your own story through comics
letsgokoyo
1
1.1k
Designing Experiences People Love
moore
143
24k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Documentation Writing (for coders)
carmenintech
77
5.5k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
830
The Spectacular Lies of Maps
axbom
PRO
1
950
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Transcript
Androidの アプリ内課金を AACで実装する In-tamachi Billing Night 2019/04/10 (Wed) @syarihu
Taichi Sato (@syarihu) • Money Forward, Inc. ◦ Android Engineer
• TechBooster
None
勉強会開催の経緯
None
年額課金をリリース! • 月額課金に加えて年額課金がで きるようになった • 年額課金を実装する際、課金周 りの知見が少なくて困った
None
アプリ内課金の勉強会開催へ • そんな感じでつぶやいてみた • 「ええやん」ってなって開催するこ とになった
アプリ内課金の勉強会開催へ • Subscriptionだと定期購読だけ になってしまうので In-tamachi Billing Nightになっ た
Androidのアプリ内課金を AACで実装する
定期購入とは?
定期購入とは? • Play Consoleで管理可能な アプリ内アイテムは3種類ある
定期購入とは? • 管理対象アイテム • 定期購入 • 特典アイテム
定期購入とは? • 管理対象アイテム • 定期購入 • 特典アイテム
定期購入とは? • 週、月、3ヶ月、6ヶ月、年間のい ずれかの期間で定期的に課金で きるアイテム • 新規購入者に対して、無料期間 やお試し価格の設定も可能
定期購入とは? • ある定期購入アイテムから 別の定期購入アイテムへのアッ プグレードまたはダウングレード を行う仕組みも提供
定期購入のアップグレードと ダウングレード • ユーザーは定期購入期間の終了 を待たず、グレード変更可能 • 変更前のプランですでに無料期 間を終えている場合は 新たに無料期間は発生しない
定期購入のアップグレードと ダウングレード • グレード変更を行うと現在有効な 定期購入はただちにキャンセルさ れ、新たな定期購入が作成され る
定期購入のアップグレードと ダウングレード • 最初の支払いは前の定期購入の 未使用分を使い切ったあとから 始まる
月額プラン 500円 / 月 プラン変更 2019年04月15日 年額プラン 5,500円 / 年
支払い日 2019年04月01日
月額プラン 500円 / 月 プラン変更 2019年04月15日 年額プラン 5,500円 / 年
支払い日 2019年04月01日 500円 / 30日 = 16.66円 / 日 250円分使用
月額プラン 500円 / 月 プラン変更 2019年04月15日 年額プラン 5,500円 / 年
支払い日 2019年04月01日 500円 / 30日 = 16.66円 / 日 250円分使用
月額プラン 500円 / 月 プラン変更 2019年04月15日 年額プラン 5,500円 / 年
支払い日 2019年04月01日 500円 / 30日 = 16.66円 / 日 250円分使用 前プランの残り = 250円
月額プラン 500円 / 月 プラン変更 2019年04月15日 年額プラン 5,500円 / 年
支払い日 2019年04月01日 500円 / 30日 = 16.66円 / 日 250円分使用 前プランの残り = 250円 5,500円 / 365日 = 15.07円 / 日
月額プラン 500円 / 月 プラン変更 2019年04月15日 年額プラン 5,500円 / 年
支払い日 2019年04月01日 500円 / 30日 = 16.66円 / 日 250円分使用 前プランの残り = 250円 5,500円 / 365日 = 15.07円 / 日 250円 / 15.07円 = 1日分使用可能 (16.58円)
月額プラン 500円 / 月 プラン変更 2019年04月15日 年額プラン 5,500円 / 年
支払い日 2019年04月01日 500円 / 30日 = 16.66円 / 日 250円分使用 前プランの残り = 250円 5,500円 / 365日 = 15.07円 / 日 250円 / 15.07円 = 1日分使用可能 (16.58円) 新プラン支払い開始 2019年04月17日
定期購入のアップグレードと ダウングレード • 2019年04月17日以降は毎年04 月17日に課金が発生する
定期購入のアップグレードと ダウングレード • 定期購入アイテム間のアップグ レードやダウングレードの関係性 はPlay Consoleで何か 設定するわけではない
定期購入のアップグレードと ダウングレード • 古いプランから新しいプランへ移 行するといった関連付けは実装 をする際に行う
定期購入のアップグレードと ダウングレード • たとえば年額プランから月額プラ ンへのアップグレードをするなど の見せ方も開発者が定義する
Google Play Billing Libraryを利用する
Google Play BIlling Library • アプリ内課金に便利なクラスを提 供するライブラリ • Google Playアプリとの通信を行
うIn-app Billing APIの操作もライ ブラリ内部に隠蔽されている
Google Play BIlling Library
Google Play BIlling Library AACも利用するので一緒に入れておく
ViewModelでBillingClient を管理する
ViewModelでBillingClientを管理する
ViewModelでBillingClientを管理する
ViewModelでBillingClientを管理する
Google Playのアプリ内 課金サービスに接続する
BillingClientStateListenerの実装と startConnectionの実行
BillingClientStateListenerの実装と startConnectionの実行
BillingClientStateListenerの実装と startConnectionの実行
LifecycleObserverを使って onCreateで接続を開始する
LifecycleObserverを使って onCreateで接続を開始する
LifecycleObserverを使って onCreateで接続を開始する
ViewModelの破棄時に接続を解除する
ViewModelの破棄時に接続を解除する
LiveDataで状態を管理する
各状態を表すsealedクラス
各状態を表すsealedクラス
各状態を表すsealedクラス
BillingStatusをLiveDataで管理する
BillingStatusをLiveDataで管理する
BillingStatusをLiveDataで管理する
BillingStatusをLiveDataで管理する
アプリ内アイテムを 管理する
アプリ内アイテムを管理する
アプリ内アイテムを管理する
アプリ内アイテムを管理する
アプリ内アイテムを管理する
商品情報を取得する
商品情報を取得する
商品情報を取得する
商品情報を取得する
商品情報を取得する
商品情報を取得する
商品情報を取得する
定期購入アイテムを 購入する
定期購入アイテムを購入する
定期購入アイテムを購入する
定期購入アイテムを購入する
定期購入アイテムを購入する
定期購入アイテムを購入する
定期購入アイテムを購入する
定期購入アイテムを購入する
None
定期購入のアップグレードを 行う
定期購入のアップグレードを行う
定期購入のアップグレードを行う
定期購入のアップグレードを行う
定期購入のアップグレードを行う
定期購入のアップグレードを行う
定期購入のアップグレードを行う
定期購入のアップグレードを行う
定期購入のアップグレードを行う
定期購入のアップグレードを行う
定期購入のアップグレードを行う
None
None
まとめ
まとめ • グレード変更後の最初の支払い は前の定期購入の未使用分を使 い切ったあとから始まる
まとめ • 定期購入アイテム間のアップグ レードやダウングレードの関係性 はPlay Consoleで何か 設定するわけではない • グレード変更の関連付けは 実装時に行う
まとめ • Play Billing Libraryの BillingClientはViewModelで管 理するとよい • Play Billing
Libraryの各状態は sealedクラスで定義し、LiveData で状態管理すると楽
まとめ • 課金アイテムの情報はenumクラ スで管理しておくと楽
まとめ • アプリ内課金の知見はWebにあ まりないのでみんな知ってるで しょって思ってることでも共有して ほしい
アプリ内課金の検証や テストコードなどの より詳細な話は技術書典で!
宣伝
None
TechBooster 技術書典6 新刊 [さ05] Android Qなどの最新モ バイル開発情報、 TensorFlow内部の誰も知 らない最適化、今すぐ使え るアプリ内課金やテスト、
Safe Argsなど盛りだくさん 144pです! サークル詳細 | TechBooster | 技術書典 https://techbookfest.org/event/tbf06/circle/61870001
ありがとうございました