LoginSignup
3
0

More than 3 years have passed since last update.

[Android]リアルタイムデベロッパー通知をFirestoreに保存

Posted at

少し前に、Androidのサブスクリプションについて、GooglePlayから更新情報を取得しFirestoreに保存する実装をしたので、思い出しながらまとめてみた。

前提

  • Firebaseでプロジェクトを作成している
  • FirebaseでCloud Functionsを編集できる権限を持つ
  • Google Play Consoleで編集できる権限を持つ
  • Cloud PubSubを設定する権限を持つ

実装手順

Cloud PubSubでトピックの作成

参考:トピック作成手順

  • Cloud Pub/Sub設定ページに移動
  • (必要であれば)プロジェクトを変更
  • 「トピックを作成」を押すと、作成ダイアログが表示される
  • トピックIDを入力
  • 暗号化は「Googleが管理する鍵」 -「トピックを作成」を押す

Cloud PubSubでサブスクリプションの作成

参考:サブスクリプションの追加

  • Cloud Pub/Sub設定ページに移動
  • 対象のトピックのメニュー>サブスクリプションを作成
  • サブスクリプションIDを入力
  • 配信タイプはpull
  • 「作成」を押す

Cloud PubSubで公開権限を付与

参考;公開権限を付与

  • Cloud Pub/Sub設定ページに移動
  • 対象のトピックのメニュー>権限の表示
  • 「メンバーを追加」を押す
  • google-play-developer-notifications@system.gserviceaccount.comを入力
  • 役割は「Pub/Subパブリッシャー」を選択する
  • 「追加」を押す

※Cloud Pub/Subの「トピックの名前」をコピーしておく。

GooglePlayConsoleでトピックの設定

参考:トピックの設定

  • Consoleに移動する
  • 該当のAndroid アプリを選択
  • [開発ツール] > [サービスと API] ページに移動
  • ページ下部の [リアルタイム デベロッパー通知] までスクロール
  • Cloud Pub/Subの「トピックの名前」をコピーし、入力する
  • 「保存」を押す

Cloud Functionの実装

参考:Firebase Cloud FunctionsとCloud Pub/Subの連携
Firebase Cloud Functionsを使い、Firestoreに保存する。コレクションの名前はgoogleplayとする。

Cloud Functionsのindex.jsに以下を追加する。

//GooglePlayからの通知
exports.androidUpdateNotification = functions.pubsub.topic('[subscription]').onPublish((message) => {    
  try {
    var json = message.json;
    json.timestamp = admin.firestore.FieldValue.serverTimestamp();  
    json.date = new Date().getTime();

    let ref = admin.firestore().collection("googleplay").doc();
    ref.set(json).then(ref => {
      console.log("success to add");
    }).catch(error => {
      console.log(error);
    });

  } catch (e) {
    console.error('PubSub message was not JSON', e);
  }
});

[subscription]のところには、Cloud Pub/SubのトピックID(トピック名でない)を入力する。
編集が終わったらDeployする。

テスト

GooglePlayConsoleからテストの通知を送ることができます。

  • Consoleに移動する
  • 該当のAndroid アプリを選択
  • [開発ツール] > [サービスと API] ページに移動
  • ページ下部の [リアルタイム デベロッパー通知] までスクロール
  • 「テスト通知を送信」を押す

終わりに

リアルタイムデベロッパー通知を利用し、Firestoreに保存するところまでできました。
これで、ユーザーのサブスクリプション状態の変更を受け取ることができます。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0