[Android]リアルタイムデベロッパー通知をFirestoreに保存
少し前に、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設定ページに移動
- 対象のトピックのメニュー>権限の表示
- 「メンバーを追加」を押す
-
[email protected]
を入力 - 役割は「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に保存するところまでできました。
これで、ユーザーのサブスクリプション状態の変更を受け取ることができます。
Author And Source
この問題について([Android]リアルタイムデベロッパー通知をFirestoreに保存), 我々は、より多くの情報をここで見つけました https://qiita.com/usk2000/items/6dac12fff48f66e4c649著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .