Firebase で Android の定期購入 (Google Billing Library) その1

久しぶりに定期購入を実装したら色々ハマったので同じように困っちゃっている方の参考になれば幸いです。 まずは、ドキュメントを読んでいても分からなくて調べまくった and/or 試行錯誤したポイントから説明します。 他の記事もあわせてどうぞ。

主に参考にさせていただいたサイト

Google Play Developer API にアクセスするサービスアカウントの作成

「準備する」の「Google Play Developer API を構成する」で、定期購入の情報などをサーバサイドで参照するための API にアクセスするためのサービスアカウントを作成しますが、今ひとつ欲しい情報が書かれていないように思います。 今のところ次の手順で作成したアカウントでうまくいっています。
  • Google Play Developer API のスタートガイド」の「新しい API プロジェクトを作成する」で進める。Google Cloud Platform に「Google Play Console Developer」という名前のプロジェクトが作られます。
  • 作成したプロジェクトにサービスアカウントを追加しますが、ロールは「閲覧者」でOK。全部試したわけではありませんが、オーナーロールは不要でした。ただし、全くロールを付与しないと、APIを呼び出せなかったので、何らかのロールの付与は必須のようです。
  • 追加したサービスアカウントが有効になるまで、なんなら丸一日以上かかる。その間に別の作業を進めておきましょう。ちなみに反映されるまでAPIを呼び出すと「The current user has insufficient permissions to perform the requested operation.」なエラーが発生します。ひたすら待つしかありません。

サービスアカウントへの付与権限

Google Cloud Platform でサービスアカウントが作成できたら、Google Play Console の「設定」-「API アクセス」で、そのアカウントに権限を付与します。 定期購入に限ってかもしれませんが、とりあえず「アカウントの権限」で以下の権限を付与するだけでうまくいっています。
  • アプリ情報の閲覧、一括レポートのダウンロード(読み取り専用)
  • 売上データ、注文、解約アンケートの回答の閲覧
アプリ毎の権限付与は不要です。

querySkuDetailsAsync で取得できるまでのラグ

アプリをアップロードする」で、ライブラリを組み込んだアプリを Google Play Console に登録すると、「アイテムを作成して構成する」の手順通り定期購入を登録できるようになります。 しかし、実際に「BillingClient.querySkuDetailsAsync」で登録したアイテムが取得できるようになるまではタイムラグがあります。 正確には分かりませんが、経験的に登録したアプリの審査が完了するまで待たなければならないように感じます。

その1の最後に

ドキュメントに明記されてなかったり、テキストの説明しかなかったり、世の中の開発者はそんな中で定期購入の機能を提供してて偉いなぁと思った約1ヶ月間でした。 自分なりに理解した概念図もまとまり次第アップしたいと思います。あと、サンプルコードも。 概念図を「その2」でアップしました。(2021/07/28) サンプルコードを「その3」でアップしました。

Firebase で Android の定期購入 (Google Billing Library) その1” に対して3件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。