新しいバージョンの構成の公開、古いバージョンへのロールバックなどの Firebase Remote Config イベントに応答してファンクションをトリガーできます。このガイドでは、2 つのテンプレート バージョンの差分を調べる Remote Config バックグラウンド関数の作成方法について説明します。
Remote Config 関数をトリガーする
Remote Config イベントのハンドラを定義するには、functions.remoteConfig
モジュールの onUpdate()
関数を使用します。
onUpdate
から返される TemplateVersion
オブジェクトには、バージョン番号や更新時刻など、テンプレート更新に関する重要なメタデータ フィールドが含まれています。更新を行ったユーザーのメールアドレスを取得できます。そのユーザーの名前と画像が公開されていれば、それらも取得できます。
次に、更新後のバージョンと更新前のバージョンの差分を返す Remote Config 関数の例を示します。この関数はテンプレート オブジェクトの versionNumber
フィールドを調べて、最新の(更新された)バージョンとその 1 つ前のバージョンを取得します。
exports.showConfigDiff = functions.remoteConfig.onUpdate(versionMetadata => { return admin.credential.applicationDefault().getAccessToken() .then(accessTokenObj => { return accessTokenObj.access_token; }) .then(accessToken => { const currentVersion = versionMetadata.versionNumber; const templatePromises = []; templatePromises.push(getTemplate(currentVersion, accessToken)); templatePromises.push(getTemplate(currentVersion - 1, accessToken)); return Promise.all(templatePromises); }) .then(results => { const currentTemplate = results[0]; const previousTemplate = results[1]; const diff = jsonDiff.diffString(previousTemplate, currentTemplate); functions.logger.log(diff); return null; }).catch(error => { functions.logger.error(error); return null; }); });
このサンプルでは json-diff
モジュールと request-promise
モジュールを使用して差分を作成し、テンプレート オブジェクトの取得リクエストを作成します。Remote Config のクライアント ロジックと Firebase Cloud Messaging が組み込まれた例については、Remote Config の更新をリアルタイムで伝播するをご覧ください。