Możesz wywołać funkcję w odpowiedzi na Firebase Remote Config zdarzenia, w tym opublikowanie nowej wersji konfiguracji lub przywrócenie starszej wersji. Z tego przewodnika dowiesz się, jak utworzyć funkcję działającą w tle Remote Config Zdalnej konfiguracji, która porównuje 2 wersje szablonu.
Wywoływanie funkcji Zdalnej konfiguracji
Aby zdefiniować obsługę zdarzeń Remote Config, użyj
functions.remoteConfig
funkcji onUpdate() modułu.
Obiekt TemplateVersion zwracany przez onUpdate zawiera kluczowe pola metadanych dotyczące aktualizacji szablonu, takie jak numer wersji i czas aktualizacji.
Możesz też pobrać adres e-mail użytkownika, który wprowadził aktualizację, wraz z jego imieniem i nazwiskiem oraz zdjęciem, jeśli jest dostępne.
Oto przykład funkcji Remote Config, która
zwraca różnicę między każdą zaktualizowaną wersją a wersją, którą zastąpiła. Funkcja sprawdza pole versionNumber obiektu szablonu i pobiera bieżącą (nowo zaktualizowaną) wersję wraz z wersją o numerze o 1 niższym:
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; }); });
Ten przykład używa modułów json-diff i
request-promise do
utworzenia różnicy i utworzenia żądania pobrania obiektu szablonu. Przykład, który obejmuje logikę klienta Remote Config oraz Firebase Cloud Messaging,
znajdziesz w artykule Propagowanie aktualizacji Zdalnej konfiguracji w czasie rzeczywistym.