Cloud Functions ile Remote Config'i Genişletme


Yeni bir yapılandırma sürümünün yayınlanması veya 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ünün karşılaştırmasını yapan bir Remote Config arka plan işlevi oluşturma işlemi açıklanmaktadır.

Remote Config işlevini tetikleme

Remote Config etkinlikleri için 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, şablon güncellemesi için önemli meta veri alanlarını (ör. güncellemenin sürüm numarası ve zamanı) içerir. Güncellemeyi yapan kullanıcının e-posta adresini, adını ve varsa resmini de alabilirsiniz.

Aşağıda, güncellenen her sürümün ve değiştirildiği sürümün farkını döndüren bir Remote Config işlevi örneği verilmiştir. İşlev, şablon nesnesinin versionNumber alanını inceler ve mevcut (yeni güncellenmiş) sürümü bir sayı daha düşük sürümle birlikte 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 örnekte, fark oluşturmak ve şablon nesnesini almak için istek oluşturmak üzere json-diff ve request-promise modülleri kullanılır. Remote Config istemci mantığının yanı sıra Firebase Cloud Messaging'ü içeren bir örnek için Remote Config güncellemelerini anlık olarak dağıtma başlıklı makaleyi inceleyin.