Play Billing Library 2.0
by
syarihu
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Play Billing Library 2.0 shibuya.apk #36 2019/08/01 (Thu) @syarihu
Slide 2
Slide 2 text
登壇の経緯
Slide 3
Slide 3 text
https://twitter.com/mhidaka/status/1153942417021648896
Slide 4
Slide 4 text
https://twitter.com/syarihu/status/1153942881373003778
Slide 5
Slide 5 text
https://twitter.com/syarihu/status/1153942929745969152
Slide 6
Slide 6 text
https://twitter.com/syarihu/status/1153943259422478337
Slide 7
Slide 7 text
わずか3分のできごとでした
Slide 8
Slide 8 text
自己紹介
Slide 9
Slide 9 text
Taichi Sato (@syarihu) ● Money Forward, Inc. ○ Android Engineer ● TechBooster
Slide 10
Slide 10 text
Play Billing Library
Slide 11
Slide 11 text
Play Billing Libraryとは ● Google Playの課金サービスであ るPlay Billingと連携するための AIDLを抽象化したライブラリ
Slide 12
Slide 12 text
Play Billing Libraryとは ● AIDLはライブラリ内部に隠蔽 されたので実装が楽になった ● いまGoogle Playの課金を実装す るならこれを使わないとダメ
Slide 13
Slide 13 text
Play Billing Libraryとは ● 2017年の9月に1.0が正式リリー ス ○ 2019年7月現在の最新は 2.0.2
Slide 14
Slide 14 text
IO19での発表
Slide 15
Slide 15 text
What's New with Google Play Billing (Google I/O'19) https://youtu.be/N4004Set4F8
Slide 16
Slide 16 text
IO19での発表 ● Play Billing Libraryが Play Billingと連携するための 正式な方法となった
Slide 17
Slide 17 text
IO19での発表 ● Play Billing Libraryのロードマッ プ ● Play Billing Library 2.0
Slide 18
Slide 18 text
Play Billing Library ロードマップ
Slide 19
Slide 19 text
ロードマップ ● Play Billing LibraryはI/O毎に メジャーバージョンアップ ● 各メジャーバージョンは リリース後2年サポート
Slide 20
Slide 20 text
ロードマップ ● AIDL, Play Billing Library 1.xの サポートは2021年のI/Oまで
Slide 21
Slide 21 text
ロードマップ ● サポートが切れたものを利用して いると、アプリの新規公開・アップ デートはできなくなる
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
ロードマップ ● 今回の発表はビルドターゲットを最 新にするだけでアプリに簡単にPlay Billingの新しい機能を採用できるこ とを目的としている
Slide 24
Slide 24 text
ロードマップ ● メジャーバージョンアップで 毎回大きい機能がリリース されるかも…?
Slide 25
Slide 25 text
ロードマップ ● Play Billing Libraryの アップデートは計画的に
Slide 26
Slide 26 text
Play Billing Library 2.0 Overview
Slide 27
Slide 27 text
Play Billing Library 2.0 ● acknowledge ● Pending transactions ● APIの追加・変更
Slide 28
Slide 28 text
Play Billing Library 2.0 ● acknowledge ● Pending transactions ● APIの追加・変更
Slide 29
Slide 29 text
Play Billing Library 2.0 ● acknowledge ● Pending transactions ● APIの追加・変更
Slide 30
Slide 30 text
Play Billing Library 2.0 ● acknowledge ● Pending transactions ● APIの追加・変更
Slide 31
Slide 31 text
acknowledge
Slide 32
Slide 32 text
acknowledge ● Play Billing Libraryを介して行っ た全ての購入に対して acknowledge(承認)を行うこと が必須になった(2.0から)
Slide 33
Slide 33 text
acknowledge ● 購入後、3日以内に承認をしない場 合はユーザーは自動的に払い戻し を受け、Google Playは購入を取り 消す
Slide 34
Slide 34 text
acknowledge ● テスト用のライセンスアカウントでテ スト購入を行った場合は3日以内で はなく5分以内に承認を行わなけれ ば自動で取り消される
Slide 35
Slide 35 text
通常の支払いフロー
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
No content
Slide 38
Slide 38 text
Google Playでの購入は正常にできているのに サービスは利用できない状態になってしまう
Slide 39
Slide 39 text
acknowledge対応した 支払いフロー
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
No content
Slide 42
Slide 42 text
購入情報の登録に失敗しても 3日以内に承認されない場合は払い戻されるので安心
Slide 43
Slide 43 text
アプリ側で承認することも可能
Slide 44
Slide 44 text
アプリで通信失敗したときなどの考慮は必要
Slide 45
Slide 45 text
Pending transactions
Slide 46
Slide 46 text
Pending transactions ● 遅延支払いができる新しい 支払い方法 ● 支払いは実店舗での現金払いや 銀行振込などを想定
Slide 47
Slide 47 text
Pending transactions ● 管理対象アイテムで利用できる ● 定期購入では利用できない ○ 支払い方法の選択肢には出てこ ない
Slide 48
Slide 48 text
Pending transactions ● 発表では現金払いは日本とメキ シコで今日から利用可能って言っ ていたけれど、今のところまだ使 えない (2019年7月現在)
Slide 49
Slide 49 text
Pending transactionsの 利用例(コンビニ)
Slide 50
Slide 50 text
What's New with Google Play Billing (Google I/O'19) より引用 https://youtu.be/N4004Set4F8
Slide 51
Slide 51 text
What's New with Google Play Billing (Google I/O'19) より引用 https://youtu.be/N4004Set4F8
Slide 52
Slide 52 text
No content
Slide 53
Slide 53 text
ここはサービス側が良い感じに コミュニケーションをしてあげる必要がありそう
Slide 54
Slide 54 text
No content
Slide 55
Slide 55 text
保留中の購入は アカウント情報の購入履歴から確認可能
Slide 56
Slide 56 text
No content
Slide 57
Slide 57 text
No content
Slide 58
Slide 58 text
No content
Slide 59
Slide 59 text
No content
Slide 60
Slide 60 text
No content
Slide 61
Slide 61 text
アプリ「外」課金が可能になった
Slide 62
Slide 62 text
今回はアプリ起動時に購入履歴をチェックしているが、 他にも支払い後3日以内に確実に承認を成功させる工夫が必要
Slide 63
Slide 63 text
Real-time Developer Notificationsとか使うと良いかも
Slide 64
Slide 64 text
ちなみにアプリが起動中の場合は普通に購入イベントが 走るので通常の購入と同じようにレシートを受け取れる
Slide 65
Slide 65 text
Pending transactions のテスト
Slide 66
Slide 66 text
Pending transactions ● Pending transactionsはテスト用 のライセンスアカウントを使ってテ ストできる
Slide 67
Slide 67 text
Pending transactions ● Play Billing Library 2.0を利用し たアプリで管理対象アイテムのテ スト購入を行うと、スローカードが 選択できる
Slide 68
Slide 68 text
No content
Slide 69
Slide 69 text
No content
Slide 70
Slide 70 text
No content
Slide 71
Slide 71 text
Pending transactions ● Pending transactionsは購入が 完了状態に移行してから acknowledgeの3日間の期間が 開始される
Slide 72
Slide 72 text
Pending transactions ● テスト購入では購入完了通知が きてから5分以内に承認しないと 払い戻されるので注意
Slide 73
Slide 73 text
APIの変更・追加
Slide 74
Slide 74 text
enablePendingPurchase ● BillingClientの生成時に呼び出す ことが必須になった ● 呼び出さないと例外が発生する
Slide 75
Slide 75 text
enablePendingPurchase ● Pending transactionsをサポートし ていることを意味する
Slide 76
Slide 76 text
enablePendingPurchase
Slide 77
Slide 77 text
PurchaseState ● Pending transactions用に追加さ れた購入状態を表すステータス ● Purchaseオブジェクトに purchaseStateが追加されている
Slide 78
Slide 78 text
PurchaseState ● Purchase.PurchaseState.PENDING ● Purchase.PurchaseState.PURCHASED
Slide 79
Slide 79 text
acknowledgePurchase
Slide 80
Slide 80 text
acknowledgePurchase
Slide 81
Slide 81 text
acknowledgePurchase
Slide 82
Slide 82 text
acknowledgePurchase
Slide 83
Slide 83 text
acknowledgePurchase
Slide 84
Slide 84 text
responseCode -> ResponseResult
Slide 85
Slide 85 text
responseCode -> ResponseResult
Slide 86
Slide 86 text
queryPurchaseHistoryAsync ● 購入履歴を取得するメソッド ○ queryPurchases ○ queryPurchaseHistoryAsync
Slide 87
Slide 87 text
queryPurchaseHistoryAsync ● どちらもPurchaseのリストを取得で きるが、2つのメソッドが取得できる Purchase内のデータに違いがあっ た
Slide 88
Slide 88 text
queryPurchaseHistoryAsync ● その問題を解消するため、 queryPurchaseHistoryAsyncの 返り値はPurchaseHistoryRecord のリストになった
Slide 89
Slide 89 text
queryPurchaseHistoryAsync ● PurchaseHistoryRecordは次の データを除いてPurchaseと同じ ○ autoRenewing, orderId, packageName, purchaseState, acknowledged
Slide 90
Slide 90 text
BillingFlowParams.setSku()の削除 ● Play Billing Library 1.2で非推奨 になったsetSkuが2.0で削除され た
Slide 91
Slide 91 text
BillingFlowParams.setSku()の削除 ● setSkuの代わりに、SkuDetailsオ ブジェクトを渡すsetSkuDetailsメ ソッドに置き換える必要がある
Slide 92
Slide 92 text
BillingFlowParams.setSku()の削除 ● Play Billing Library1.2で対応済 の場合は特に対応は必要無い
Slide 93
Slide 93 text
まとめ
Slide 94
Slide 94 text
まとめ ● Play Billing Library 2.0からは acknowledge対応が必須になっ た
Slide 95
Slide 95 text
まとめ ● Pending transactionsは定期購 入のみの場合は対応不要だが、 管理対象アイテムを提供している 場合は対応が必要
Slide 96
Slide 96 text
まとめ ● レスポンスやメソッドの返り値に 変更があるので、アップデートす る場合はその点に注意
Slide 97
Slide 97 text
まとめ ● もっと実装の話もしたかったけど15 分では圧倒的に時間が足りなくて 無理でした…気になる人は懇親会 で聞いてください!
Slide 98
Slide 98 text
宣伝
Slide 99
Slide 99 text
Andoirdプログラミング 短編集 王女とカルテットの宝探 し ● Android Qのジェスチャーナ ビゲーション、ストレージ、ダ イレクトシェア ● Kotlin Coroutines Flow、 WorkManagerとAndroidの 歴史 ● Apply Changesの解説、V言 語の秘密など https://techbooster.booth.pm/items/1485567
Slide 100
Slide 100 text
ご清聴ありがとうございました