GoogleのReal-time developer notificationで定期購読されたことをRailsサーバーに通知する
概念図
Androidアプリで定期購入があると、以下のようにイベントが送られる
Play StoreのReal-time developer notifications -> Google Cloud Pub/Sub -> Railsサーバー
Google Cloudにプロジェクトを作成する
Google Cloudにプロジェクトを作成して認証情報を設定する
ガイド
Google Play Developer API > Getting Started
Google Cloud Platformのプロジェクトを新規作成する
Google Play Android Developer APIを有効にする
Railsのエンドポイントの準備
ルーティングとコントローラーの作成
エンドポイントは、api/v1/google_server_notifications にした
Google Cloud Pub/Subを作成する
ガイド
Google Cloud コンソールを使用して Pub/Sub にメッセージをパブリッシュし、受信する
プロジェクトの設定ボタンからCloud Pub/Subを有効にする
トピックの作成
Google Cloud コンソールで、[Pub/Sub] ページに移動
トピックを作成
トピック名はplay-subsにした(Google Play Subscriptionsの略で公式のサンプルアプリがそうしていたので)
暗号化は「Google が管理する暗号鍵」というデフォルトのままで
サブスクリプションを作成
play-subs-subというサブスクリプションが自動で作成されるが自分で作りたいので削除する
以下のようなサブスクリプションを作成する
- サブスクリプションIDは適当でOK
- Cloud Pub/Sub トピックはドロップダウンから先ほど作成したトピックを選択
- 配信タイプはpushにしてエンドポイントURLはRailsのサーバーを指定する
- いったんはngrokでローカルのサーバーを公開したものにする
トピックに関する公開権限の付与
ガイド
Cloud Pub/Subの画面からサービスアカウントPub/Subパブリッシャーのロールを付与する
Google Cloud > プロジェクトを選択 > Pub/Sub > トピック > リスト > 権限の表示
サービスアカウントgoogle-play-developer-notifications@system.gserviceaccount.com
を入力して、Pub/Sub パブリッシャーを割り当てる
Play StoreとGoogle Cloud Pub/Subを接続する
Google Play Consoleのホーム > アプリの選択 > 収益化のセットアップ > Google Play 請求サービス > リアルタイム ディベロッパー通知 > トピック名に、作成したトピックのフルネームを入力
projects/memotia-server/topics/play-subs
テスト通知を送信ボタンでRailsサーバーに通知が届くことを確認する