Open1

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
https://developers.google.com/android-publisher/getting_started

Google Cloud Platformのプロジェクトを新規作成する

https://console.cloud.google.com/welcome?hl=ja

Google Play Android Developer APIを有効にする

https://console.cloud.google.com/apis/library/androidpublisher.googleapis.com

Railsのエンドポイントの準備

ルーティングとコントローラーの作成

エンドポイントは、api/v1/google_server_notifications にした

Google Cloud Pub/Subを作成する

ガイド

Google Cloud コンソールを使用して Pub/Sub にメッセージをパブリッシュし、受信する
https://cloud.google.com/pubsub/docs/publish-receive-messages-console?hl=ja

プロジェクトの設定ボタンからCloud Pub/Subを有効にする


トピックの作成

Google Cloud コンソールで、[Pub/Sub] ページに移動

https://cloud.google.com/pubsub/docs/publish-receive-messages-console?hl=ja

トピックを作成

トピック名はplay-subsにした(Google Play Subscriptionsの略で公式のサンプルアプリがそうしていたので)

暗号化は「Google が管理する暗号鍵」というデフォルトのままで

サブスクリプションを作成

play-subs-subというサブスクリプションが自動で作成されるが自分で作りたいので削除する

以下のようなサブスクリプションを作成する

  • サブスクリプションIDは適当でOK
  • Cloud Pub/Sub トピックはドロップダウンから先ほど作成したトピックを選択
  • 配信タイプはpushにしてエンドポイントURLはRailsのサーバーを指定する

トピックに関する公開権限の付与

ガイド

Cloud Pub/Subの画面からサービスアカウントPub/Subパブリッシャーのロールを付与する
https://developer.android.com/google/play/billing/getting-ready?hl=ja#configure-rtdn

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サーバーに通知が届くことを確認する