Cloud Functions ile Remote Config'in kapsamını genişletin


Yeni bir yapılandırma sürümünün yayınlanması veya daha eski bir sürüme geri dönme gibi Remote Config etkinliklerine yanıt olarak bir işlevi tetikleyebilirsiniz. Bu kılavuzda, iki şablon sürümü arasında fark gerçekleştiren bir Remote Config arka plan işlevinin nasıl oluşturulacağı açıklanmaktadır.

Remote Config işlevini tetikleme

Remote Config etkinlikleri için bir işleyici tanımlamak üzere functions.remoteConfig modülünün onUpdate() işlevini kullanın. onUpdate tarafından döndürülen TemplateVersion nesnesi, bir şablon güncellemesinin sürüm numarası ve güncelleme zamanı gibi anahtar meta veri alanlarını içerir. Güncellemeyi yapan kullanıcının e-postasını, varsa adı ve resmiyle birlikte de alabilirsiniz.

Güncellenen her sürüm ve bunun yerini alan sürüm arasındaki farkı döndüren bir Remote Config işlevi örneğini burada bulabilirsiniz. İşlev, şablon nesnesinin versionNumber alanını inceler ve bir önceki sürümle birlikte geçerli (yeni güncellenmiş) sürümü alır:

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;
    });
});

Bu örnek, farkı oluşturmak ve şablon nesnesini alma isteği oluşturmak için json-diff ve request-promise modüllerini kullanır. Remote Config istemci mantığının yanı sıra Firebase Cloud Messaging'i kullanan bir örnek için Remote Config güncellemelerini gerçek zamanlı olarak yay bölümüne bakın.