Play Billing Library 2.0

Da5a59469ce3ebb55619ce34f85f8c4f?s=47 syarihu
August 01, 2019

Play Billing Library 2.0

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

Da5a59469ce3ebb55619ce34f85f8c4f?s=128

syarihu

August 01, 2019
Tweet

Transcript

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

  2. 登壇の経緯

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

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

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

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

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

  8. 自己紹介

  9. Taichi Sato (@syarihu) • Money Forward, Inc. ◦ Android Engineer

    • TechBooster
  10. Play Billing Library

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

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

  13. Play Billing Libraryとは • 2017年の9月に1.0が正式リリー ス ◦ 2019年7月現在の最新は 2.0.2

  14. IO19での発表

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

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

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

    2.0
  18. Play Billing Library ロードマップ

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

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

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

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

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

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

  26. Play Billing Library 2.0 Overview

  27. Play Billing Library 2.0 • acknowledge • Pending transactions •

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

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

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

    APIの追加・変更
  31. acknowledge

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

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

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

  35. 通常の支払いフロー

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

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

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

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

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

  45. Pending transactions

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

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

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

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

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

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

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

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

  56. None
  57. None
  58. None
  59. None
  60. None
  61. アプリ「外」課金が可能になった

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

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

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

  65. Pending transactions のテスト

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

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

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

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

  73. APIの変更・追加

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

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

  76. enablePendingPurchase

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

  78. PurchaseState • Purchase.PurchaseState.PENDING • Purchase.PurchaseState.PURCHASED

  79. acknowledgePurchase

  80. acknowledgePurchase

  81. acknowledgePurchase

  82. acknowledgePurchase

  83. acknowledgePurchase

  84. responseCode -> ResponseResult

  85. responseCode -> ResponseResult

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

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

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

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

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

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

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

  93. まとめ

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

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

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

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

  98. 宣伝

  99. Andoirdプログラミング 短編集 王女とカルテットの宝探 し • Android Qのジェスチャーナ ビゲーション、ストレージ、ダ イレクトシェア •

    Kotlin Coroutines Flow、 WorkManagerとAndroidの 歴史 • Apply Changesの解説、V言 語の秘密など https://techbooster.booth.pm/items/1485567
  100. ご清聴ありがとうございました