Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Play Billing Library 2.0

syarihu
August 01, 2019

Play Billing Library 2.0

Shibuya.apk #36( https://shibuya-apk.connpass.com/event/139617/ )で発表した資料です。

syarihu

August 01, 2019
Tweet

More Decks by syarihu

Other Decks in Technology

Transcript

  1. Play Billing
    Library 2.0
    shibuya.apk #36
    2019/08/01 (Thu)
    @syarihu

    View Slide

  2. 登壇の経緯

    View Slide

  3. https://twitter.com/mhidaka/status/1153942417021648896

    View Slide

  4. https://twitter.com/syarihu/status/1153942881373003778

    View Slide

  5. https://twitter.com/syarihu/status/1153942929745969152

    View Slide

  6. https://twitter.com/syarihu/status/1153943259422478337

    View Slide

  7. わずか3分のできごとでした

    View Slide

  8. 自己紹介

    View Slide

  9. Taichi Sato (@syarihu)
    ● Money Forward, Inc.
    ○ Android Engineer
    ● TechBooster

    View Slide

  10. Play Billing Library

    View Slide

  11. Play Billing Libraryとは
    ● Google Playの課金サービスであ
    るPlay Billingと連携するための
    AIDLを抽象化したライブラリ

    View Slide

  12. Play Billing Libraryとは
    ● AIDLはライブラリ内部に隠蔽
    されたので実装が楽になった
    ● いまGoogle Playの課金を実装す
    るならこれを使わないとダメ

    View Slide

  13. Play Billing Libraryとは
    ● 2017年の9月に1.0が正式リリー

    ○ 2019年7月現在の最新は
    2.0.2

    View Slide

  14. IO19での発表

    View Slide

  15. What's New with Google Play Billing (Google I/O'19)
    https://youtu.be/N4004Set4F8

    View Slide

  16. IO19での発表
    ● Play Billing Libraryが
    Play Billingと連携するための
    正式な方法となった

    View Slide

  17. IO19での発表
    ● Play Billing Libraryのロードマッ

    ● Play Billing Library 2.0

    View Slide

  18. Play Billing Library
    ロードマップ

    View Slide

  19. ロードマップ
    ● Play Billing LibraryはI/O毎に
    メジャーバージョンアップ
    ● 各メジャーバージョンは
    リリース後2年サポート

    View Slide

  20. ロードマップ
    ● AIDL, Play Billing Library 1.xの
    サポートは2021年のI/Oまで

    View Slide

  21. ロードマップ
    ● サポートが切れたものを利用して
    いると、アプリの新規公開・アップ
    デートはできなくなる

    View Slide

  22. View Slide

  23. ロードマップ
    ● 今回の発表はビルドターゲットを最
    新にするだけでアプリに簡単にPlay
    Billingの新しい機能を採用できるこ
    とを目的としている

    View Slide

  24. ロードマップ
    ● メジャーバージョンアップで
    毎回大きい機能がリリース
    されるかも…?

    View Slide

  25. ロードマップ
    ● Play Billing Libraryの
    アップデートは計画的に

    View Slide

  26. Play Billing Library 2.0
    Overview

    View Slide

  27. Play Billing Library 2.0
    ● acknowledge
    ● Pending transactions
    ● APIの追加・変更

    View Slide

  28. Play Billing Library 2.0
    ● acknowledge
    ● Pending transactions
    ● APIの追加・変更

    View Slide

  29. Play Billing Library 2.0
    ● acknowledge
    ● Pending transactions
    ● APIの追加・変更

    View Slide

  30. Play Billing Library 2.0
    ● acknowledge
    ● Pending transactions
    ● APIの追加・変更

    View Slide

  31. acknowledge

    View Slide

  32. acknowledge
    ● Play Billing Libraryを介して行っ
    た全ての購入に対して
    acknowledge(承認)を行うこと
    が必須になった(2.0から)

    View Slide

  33. acknowledge
    ● 購入後、3日以内に承認をしない場
    合はユーザーは自動的に払い戻し
    を受け、Google Playは購入を取り
    消す

    View Slide

  34. acknowledge
    ● テスト用のライセンスアカウントでテ
    スト購入を行った場合は3日以内で
    はなく5分以内に承認を行わなけれ
    ば自動で取り消される

    View Slide

  35. 通常の支払いフロー

    View Slide

  36. View Slide

  37. View Slide

  38. Google Playでの購入は正常にできているのに
    サービスは利用できない状態になってしまう

    View Slide

  39. acknowledge対応した
    支払いフロー

    View Slide

  40. View Slide

  41. View Slide

  42. 購入情報の登録に失敗しても
    3日以内に承認されない場合は払い戻されるので安心

    View Slide

  43. アプリ側で承認することも可能

    View Slide

  44. アプリで通信失敗したときなどの考慮は必要

    View Slide

  45. Pending transactions

    View Slide

  46. Pending transactions
    ● 遅延支払いができる新しい
    支払い方法
    ● 支払いは実店舗での現金払いや
    銀行振込などを想定

    View Slide

  47. Pending transactions
    ● 管理対象アイテムで利用できる
    ● 定期購入では利用できない
    ○ 支払い方法の選択肢には出てこ
    ない

    View Slide

  48. Pending transactions
    ● 発表では現金払いは日本とメキ
    シコで今日から利用可能って言っ
    ていたけれど、今のところまだ使
    えない
    (2019年7月現在)

    View Slide

  49. Pending transactionsの
    利用例(コンビニ)

    View Slide

  50. What's New with Google Play Billing (Google I/O'19) より引用
    https://youtu.be/N4004Set4F8

    View Slide

  51. What's New with Google Play Billing (Google I/O'19) より引用
    https://youtu.be/N4004Set4F8

    View Slide

  52. View Slide

  53. ここはサービス側が良い感じに
    コミュニケーションをしてあげる必要がありそう

    View Slide

  54. View Slide

  55. 保留中の購入は
    アカウント情報の購入履歴から確認可能

    View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. View Slide

  61. アプリ「外」課金が可能になった

    View Slide

  62. 今回はアプリ起動時に購入履歴をチェックしているが、
    他にも支払い後3日以内に確実に承認を成功させる工夫が必要

    View Slide

  63. Real-time Developer Notificationsとか使うと良いかも

    View Slide

  64. ちなみにアプリが起動中の場合は普通に購入イベントが
    走るので通常の購入と同じようにレシートを受け取れる

    View Slide

  65. Pending transactions
    のテスト

    View Slide

  66. Pending transactions
    ● Pending transactionsはテスト用
    のライセンスアカウントを使ってテ
    ストできる

    View Slide

  67. Pending transactions
    ● Play Billing Library 2.0を利用し
    たアプリで管理対象アイテムのテ
    スト購入を行うと、スローカードが
    選択できる

    View Slide

  68. View Slide

  69. View Slide

  70. View Slide

  71. Pending transactions
    ● Pending transactionsは購入が
    完了状態に移行してから
    acknowledgeの3日間の期間が
    開始される

    View Slide

  72. Pending transactions
    ● テスト購入では購入完了通知が
    きてから5分以内に承認しないと
    払い戻されるので注意

    View Slide

  73. APIの変更・追加

    View Slide

  74. enablePendingPurchase
    ● BillingClientの生成時に呼び出す
    ことが必須になった
    ● 呼び出さないと例外が発生する

    View Slide

  75. enablePendingPurchase
    ● Pending transactionsをサポートし
    ていることを意味する

    View Slide

  76. enablePendingPurchase

    View Slide

  77. PurchaseState
    ● Pending transactions用に追加さ
    れた購入状態を表すステータス
    ● Purchaseオブジェクトに
    purchaseStateが追加されている

    View Slide

  78. PurchaseState
    ● Purchase.PurchaseState.PENDING
    ● Purchase.PurchaseState.PURCHASED

    View Slide

  79. acknowledgePurchase

    View Slide

  80. acknowledgePurchase

    View Slide

  81. acknowledgePurchase

    View Slide

  82. acknowledgePurchase

    View Slide

  83. acknowledgePurchase

    View Slide

  84. responseCode -> ResponseResult

    View Slide

  85. responseCode -> ResponseResult

    View Slide

  86. queryPurchaseHistoryAsync
    ● 購入履歴を取得するメソッド
    ○ queryPurchases
    ○ queryPurchaseHistoryAsync

    View Slide

  87. queryPurchaseHistoryAsync
    ● どちらもPurchaseのリストを取得で
    きるが、2つのメソッドが取得できる
    Purchase内のデータに違いがあっ

    View Slide

  88. queryPurchaseHistoryAsync
    ● その問題を解消するため、
    queryPurchaseHistoryAsyncの
    返り値はPurchaseHistoryRecord
    のリストになった

    View Slide

  89. queryPurchaseHistoryAsync
    ● PurchaseHistoryRecordは次の
    データを除いてPurchaseと同じ
    ○ autoRenewing, orderId,
    packageName, purchaseState,
    acknowledged

    View Slide

  90. BillingFlowParams.setSku()の削除
    ● Play Billing Library 1.2で非推奨
    になったsetSkuが2.0で削除され

    View Slide

  91. BillingFlowParams.setSku()の削除
    ● setSkuの代わりに、SkuDetailsオ
    ブジェクトを渡すsetSkuDetailsメ
    ソッドに置き換える必要がある

    View Slide

  92. BillingFlowParams.setSku()の削除
    ● Play Billing Library1.2で対応済
    の場合は特に対応は必要無い

    View Slide

  93. まとめ

    View Slide

  94. まとめ
    ● Play Billing Library 2.0からは
    acknowledge対応が必須になっ

    View Slide

  95. まとめ
    ● Pending transactionsは定期購
    入のみの場合は対応不要だが、
    管理対象アイテムを提供している
    場合は対応が必要

    View Slide

  96. まとめ
    ● レスポンスやメソッドの返り値に
    変更があるので、アップデートす
    る場合はその点に注意

    View Slide

  97. まとめ
    ● もっと実装の話もしたかったけど15
    分では圧倒的に時間が足りなくて
    無理でした…気になる人は懇親会
    で聞いてください!

    View Slide

  98. 宣伝

    View Slide

  99. Andoirdプログラミング
    短編集
    王女とカルテットの宝探

    ● Android Qのジェスチャーナ
    ビゲーション、ストレージ、ダ
    イレクトシェア
    ● Kotlin Coroutines Flow、
    WorkManagerとAndroidの
    歴史
    ● Apply Changesの解説、V言
    語の秘密など
    https://techbooster.booth.pm/items/1485567

    View Slide

  100. ご清聴ありがとうございました

    View Slide