Remote Config istemci şablonlarını ve sürüm oluşturmayı yönetme

Şablon türünü seçin: İstemci şablonları Sunucu şablonları


Remote Config şablonları, Firebase projeniz için oluşturulan JSON biçimli parametre ve koşul kümeleridir. İstemci şablonları, Apple, Android, web, Flutter, Unity ve C++ uygulamaları dahil olmak üzere Remote Config için Firebase istemci SDK'larını uygulayan uygulama örneklerine yapılandırmalar sunar.

Müşteri şablonunuzu değiştirmek ve yönetmek için Firebase konsolunu kullanabilirsiniz. Şablonun içeriğini Parametreler sayfasında ve Koşullar sayfasında grafik biçiminde görüntülemek için DevOps ve Etkileşim > Remote Config'e gidin.

İstemci şablonunuzu değiştirmek ve yönetmek için Remote Config REST API ve Admin SDK veya Firebase CLI'yı da kullanabilirsiniz.

Aşağıda bir istemci şablonu dosyası örneği verilmiştir:

{
  "conditions": [
    {
      "name": "ios",
      "expression": "device.os == 'ios'"
    }
  ],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "ios": {
          "value": "Welcome to this sample iOS app"
        }
      }
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      }
    },
    "header_text": {
      "defaultValue": {
        "useInAppDefault": true
      }
    }
  },
  "version": {
    "versionNumber": "28",
    "updateTime": "2020-05-14T18:39:38.994Z",
    "updateUser": {
      "email": "user@google.com"
    },
    "updateOrigin": "CONSOLE",
    "updateType": "INCREMENTAL_UPDATE"
  }
}

Bu sürüm yönetimi görevlerini Firebase konsolunda gerçekleştirebilirsiniz (DevOps ve Etkileşim > Remote Config'e gidin):

  • Saklanan tüm şablon sürümlerini listeleme
  • Belirli bir sürümü alma
  • Belirli bir istemci sürümüne geri döndürme
  • Değişiklik geçmişi sayfasından Remote Config şablonu silin.

Ayrıca Firebase CLI ve Remote Config arka uç API'lerini kullanarak şablonları listeleyebilir, alabilir ve geri alabilirsiniz.

Şablon türü başına toplam 300 kayıtlı sürüm sınırı vardır (300 istemci şablonu ve 300 sunucu şablonu). Bu sınıra, silinen şablonların kayıtlı sürüm numaraları da dahildir. Bir projenin kullanım ömrü boyunca şablon türü başına 300'den fazla şablon sürümü yayınlarsanız en eski sürümler silinir ve bu türden en fazla 300 sürüm korunur.

Parametreleri her güncellediğinizde Remote Config, yeni bir sürüme sahip Remote Config şablonu oluşturur ve önceki şablonu, gerektiğinde alabileceğiniz veya geri dönebileceğiniz bir sürüm olarak saklar. Sürüm numaraları, Remote Config tarafından depolanan ilk değerden itibaren sırayla artırılır. Tüm şablonlar, gösterildiği gibi ilgili sürümle ilgili meta verileri içeren bir version alanı içerir.

Remote Config şablonlarını, Firebase konsolunun DevOps ve Etkileşim > Remote Config > Değişiklik geçmişi sayfasında gerektiği şekilde silebilirsiniz.

Remote Config şablon sürümünü yönetme

Bu bölümde, Remote Config şablonunuzun sürümlerini nasıl yöneteceğiniz açıklanmaktadır.

Şablonları programatik olarak oluşturma, değiştirme ve kaydetme hakkında daha fazla bilgi için Remote Config programatik olarak değiştirme başlıklı makaleyi inceleyin.

Remote Config şablonunun depolanan tüm sürümlerini listeleme

Remote Config şablonunun depolanan tüm sürümlerinin listesini alabilirsiniz. Bunun için:

Firebase konsolu

  1. Firebase konsolunda DevOps & Engagement > Remote Config > Parameters sayfasına gidin.

  2. Sağ üstte gösterilen "saat" simgesini seçin.

    Bu işlem, sağdaki liste menüsünde depolanan tüm şablon sürümlerini listeleyen Değişiklik geçmişi sayfasını açar.

    Depolanan her sürüm için gösterilen ayrıntılar arasında, değişikliklerin Firebase konsolundan mı, REST API'den mi, geri alma işleminden mi kaynaklandığı veya şablonun zorunlu kaydedilmesinden kaynaklanan artımlı değişiklikler olup olmadığına dair bilgiler yer alır.

Firebase CLI

firebase remoteconfig:versions:list

Döndürülen sürüm sayısını sınırlamak için --limit seçeneğini kullanın. Tüm sürümleri getirmek için "0" değerini iletin.

Node.js

function listAllVersions() {
admin.remoteConfig().listVersions()
.then((listVersionsResult) => {
  console.log("Successfully fetched the list of versions");
  listVersionsResult.versions.forEach((version) => {
    console.log('version', JSON.stringify(version));
  });
})
.catch((error) => {
  console.log(error);
});
}

Java

ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
while (page != null) {
  for (Version version : page.getValues()) {
    System.out.println("Version: " + version.getVersionNumber());
  }
  page = page.getNextPage();
}

// Iterate through all versions. This will still retrieve versions in batches.
page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
for (Version version : page.iterateAll()) {
  System.out.println("Version: " + version.getVersionNumber());
}

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:listVersions

Şablon listesi, güncelleme zamanı, güncellemeyi yapan kullanıcı ve güncellemenin nasıl yapıldığı dahil olmak üzere tüm depolanan sürümlerle ilgili meta verileri içerir. Aşağıda bir sürüm öğesi örneği verilmiştir:

{
  "versions": [{
    "version_number": "6",
    "update_time": "2022-05-12T02:38:54Z",
    "update_user": {
      "name": "Jane Smith",
      "email": "jane@developer.org",
      "imageUrl": "https://lh3.googleusercontent.com/a-/..."
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]
}

Remote Config şablonunun belirli bir sürümünü alma

Remote Config şablonunun depolanan belirli bir sürümünü alabilirsiniz. Kayıtlı bir şablon sürümünü şu şekilde alabilirsiniz:

Firebase konsolu

  1. Firebase konsolunda DevOps ve Etkileşim > Remote Config > Değişiklik geçmişi sayfasına gidin.

  2. Sayfada varsayılan olarak mevcut etkin şablon gösterilir. Farklı bir sürümü görüntülemek için sağdaki ayrıntı penceresinden ilgili sürümü seçin.

  3. Seçili olmayan herhangi bir sürümün bağlam menüsünün üzerine gelip Seçili sürümle karşılaştır'ı seçerek etkin şablon ile diğer kayıtlı sürümler arasındaki farkları ayrıntılı olarak görüntüleyebilirsiniz.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

İsteğe bağlı olarak, çıkışı -o, FILENAME ile belirtilen bir dosyaya yazabilirsiniz.

Node.js

Şablonun en yeni sürümünü almak için getTemplate yöntemini herhangi bir bağımsız değişken olmadan iletin veya belirli bir sürümü almak için getTemplateAtVersion yöntemini kullanın.

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
.then((template) => {
console.log("Successfully fetched the template with ETag: " + template.etag);
})
.catch((error) => {
console.log(error);
});

Java

Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get();
// See the ETag of the fetched template.
System.out.println("Successfully fetched the template with ETag: " + template.getETag());

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?version_number=6

?version_number URL parametresi yalnızca GET işlemleri için geçerlidir. Güncellemeler için sürüm numaralarını belirtmek amacıyla bu parametreyi kullanamazsınız. ?version_number parametresi olmadan benzer bir get isteği, mevcut etkin şablonu alır.

Remote Config şablonunun depolanan belirli bir sürümüne geri dönme

Şablonun depolanan herhangi bir sürümüne geri dönebilirsiniz. Bir şablonu nasıl geri alacağınız aşağıda açıklanmıştır:

Firebase konsolu

  1. Firebase konsolunda DevOps ve Etkileşim > Remote Config > Değişiklik geçmişi sayfasına gidin.

  2. Geri alınabilecek önceki şablon sürümleri için sayfanın sağ üst kısmındaki seçenek düğmesini bulun.

  3. Yalnızca bu sürüme geri dönmek ve bu değerleri tüm uygulamalar ve kullanıcılar için hemen kullanmak istediğinizden eminseniz bu seçeneği tıklayıp onaylayın.

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

Node.js

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

Java

try {
  Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get();
  System.out.println("Successfully rolled back to template version: " + versionNumber);
  System.out.println("New ETag: " + template.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Error trying to rollback template.");
    System.out.println(rcError.getMessage());
  }
}

REST

Depolanan bir Remote Config şablonuna geri dönmek için özel yöntem :rollback ile bir HTTP POST isteği gönderin ve istek gövdesinde uygulanacak sürümü belirtin. Örneğin:

curl --compressed -D headers -H "Authorization: Bearer token" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:rollback -d '{"version_number": 6}'

Yanıt, yeni sürüm meta verileriyle birlikte etkin durumdaki kayıtlı şablonun içeriğini barındırır.

Bu geri alma işleminin, numaralandırılmış yeni bir sürüm oluşturduğunu unutmayın. Örneğin, 10. sürümden 6. sürüme geri dönüldüğünde 6. sürümün yeni bir kopyası oluşturulur. Bu kopya, orijinalinden yalnızca sürüm numarasının 11 olmasıyla ayrılır. Orijinal sürüm 6, geçerlilik süresi dolmadığı varsayılarak depolanmaya devam eder ve sürüm 11 etkin şablon olur.

Remote Config şablonunu silme

Firebase konsolunu kullanarak Remote Config şablonlarını silebilirsiniz. Şablonları şu şekilde silebilirsiniz:

  1. Firebase konsolunda DevOps & Engagement > Remote Config > Parameters sayfasına gidin.

  2. Değişiklik geçmişi'ni tıklayın.

  3. Silmek istediğiniz şablona gidin, Diğer'i tıklayın ve Sil'i seçin.

  4. Silme işlemini onaylamanız istendiğinde Sil'i tıklayın.

Remote Config şablonu indirin ve yayınlayın

Remote Config şablonlarını indirip yayınlayarak kaynak denetimi ve derleme sistemlerinize entegre edin, yapılandırma güncellemelerini otomatikleştirin ve parametreler ile değerleri birden fazla projede senkronize edin.

Şu anda etkin olan Remote Config şablonunu programatik olarak veya Firebase konsolundan indirebilirsiniz. Ardından, dışa aktarılan JSON dosyasını güncelleyebilir ve aynı projede ya da yeni veya mevcut bir projede yayınlayabilirsiniz.

Örneğin, yazılım geliştirme yaşam döngünüzün farklı aşamalarını (geliştirme, test, hazırlık ve üretim ortamları gibi) temsil eden birden fazla projeniz olduğunu varsayalım. Bu durumda, tam olarak test edilmiş bir şablonu hazırlık projenizden indirip üretim projenizde yayınlayarak hazırlık ortamınızdan üretim ortamınıza yükseltebilirsiniz.

Bu yöntemi kullanarak yapılandırmaları bir projeden diğerine taşıyabilir veya yeni bir projeyi, mevcut bir projenin parametreleri ve değerleriyle doldurabilirsiniz.

Bir denemede varyant olarak özel olarak oluşturulan parametreler ve parametre değerleri, dışa aktarılan şablonlara dahil edilmez.A/B Testing

Remote Config şablonlarını dışa ve içe aktarmak için:

  1. Mevcut Remote Config şablonunu indirin.
  2. Remote Config şablonunu doğrulayın.
  3. Remote Config şablonunu yayınlayın.

Mevcut Remote Config şablonunu indirin

Etkin Remote Config şablonunu JSON biçiminde indirmek için aşağıdakileri kullanın:

Firebase konsolu

  1. Firebase konsolunda DevOps & Engagement > Remote Config > Parameters or Conditions (Parametreler veya Koşullar) sayfasına gidin.

  2. Menü'yü açın ve Mevcut yapılandırma dosyasını indir'i seçin.

  3. İstendiğinde Yapılandırma dosyasını indir'i tıklayın, dosyayı kaydetmek istediğiniz konumu seçin ve Kaydet'i tıklayın.

Firebase CLI

firebase remoteconfig:get -o filename

Node.js

function getTemplate() {
  var config = admin.remoteConfig();
  config.getTemplate()
      .then(function (template) {
        console.log('ETag from server: ' + template.etag);
        var templateStr = JSON.stringify(template);
        fs.writeFileSync('config.json', templateStr);
      })
      .catch(function (err) {
        console.error('Unable to get template');
        console.error(err);
      });
}

Java

Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get();
// See the ETag of the fetched template.
System.out.println("ETag from server: " + template.getETag());

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename

Bu komut çıkışı, JSON yükünü bir dosyaya, başlıkları (ETag dahil) ise ayrı bir headers dosyasına çıkarır.

Remote Config şablonunu doğrulama

Şablon güncellemelerinizi yayınlamadan önce Firebase Admin SDK veya REST API'yi kullanarak doğrulayabilirsiniz. Şablonlar, Firebase CLI veya Firebase konsolundan yayınlamaya çalıştığınızda da doğrulanır.

Şablon doğrulama işlemi, parametreler ve koşullar için yinelenen anahtarlar, geçersiz koşul adları veya mevcut olmayan koşullar ya da yanlış biçimlendirilmiş ETag'ler gibi hataları kontrol eder. Örneğin, izin verilen anahtar sayısından (2.000) daha fazla anahtar içeren bir istek, Param count too large hata mesajını döndürür.

Node.js

function validateTemplate(template) {
  admin.remoteConfig().validateTemplate(template)
      .then(function (validatedTemplate) {
        // The template is valid and safe to use.
        console.log('Template was valid and safe to use');
      })
      .catch(function (err) {
        console.error('Template is invalid and cannot be published');
        console.error(err);
      });
}

Java

try {
  Template validatedTemplate = FirebaseRemoteConfig.getInstance()
          .validateTemplateAsync(template).get();
  System.out.println("Template was valid and safe to use");
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Template is invalid and cannot be published");
    System.out.println(rcError.getMessage());
  }
}

REST

Şablon güncellemelerini doğrulamak için yayınlama isteğinize URL parametresi ?validate_only=true ekleyin:

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?validate_only=true -d @filename

Şablonunuz başarıyla doğrulandıysa curl komutu, gönderdiğiniz JSON şablonunu döndürür ve kaydedilen headers dosyasında bir HTTP/2 durum 200 ve -0 son ekine sahip güncellenmiş bir ETag görürsünüz. Şablonunuz doğrulanmadıysa JSON yanıtında doğrulama hatası alırsınız ve headers dosyanız 200 olmayan bir yanıt içerir (ve ETag içermez).

Remote Config şablonunu yayınlama

Bir şablonu indirip JSON içeriğinde gerekli değişiklikleri yaptıktan ve doğruladıktan sonra bir projede yayınlayabilirsiniz.

Bir şablonu yayınladığınızda mevcut yapılandırma şablonunun tamamı güncellenmiş dosyayla değiştirilir ve şablon sürümü bir artırılır. Yapılandırmanın tamamı değiştirildiğinden, JSON dosyasından bir parametreyi silip yayınlarsanız parametre sunucudan silinir ve artık istemciler tarafından kullanılamaz.

Yayınlandıktan sonra, parametrelerde ve değerlerde yapılan değişiklikler uygulamalarınız ve kullanıcılarınız tarafından hemen kullanılabilir. Gerekirse önceki bir sürüme geri dönebilirsiniz.

Şablonunuzu yayınlamak için aşağıdaki komutları kullanın:

Firebase konsolu

  1. Firebase konsolunda DevOps & Engagement > Remote Config > Parameters or Conditions (Parametreler veya Koşullar) sayfasına gidin.

  2. Menü'yü açın ve Dosyadan yayınla'yı seçin.

  3. İstendiğinde Göz at'ı tıklayın, yayınlamak istediğiniz Remote Config dosyasına gidip dosyayı seçin ve ardından Seç'i tıklayın.

  4. Firebase, dosyayı doğrular. Doğrulama başarılı olursa yapılandırmayı uygulamalarınız ve kullanıcılarınız için hemen kullanılabilir hale getirmek üzere Yayınla'yı tıklayın.

Node.js

function publishTemplate() {
  var config = admin.remoteConfig();
  var template = config.createTemplateFromJSON(
      fs.readFileSync('config.json', 'UTF8'));
  config.publishTemplate(template)
      .then(function (updatedTemplate) {
        console.log('Template has been published');
        console.log('ETag from server: ' + updatedTemplate.etag);
      })
      .catch(function (err) {
        console.error('Unable to publish template.');
        console.error(err);
      });
}

Java

try {
  Template publishedTemplate = FirebaseRemoteConfig.getInstance()
          .publishTemplateAsync(template).get();
  System.out.println("Template has been published");
  // See the ETag of the published template.
  System.out.println("ETag from server: " + publishedTemplate.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Unable to publish template.");
    System.out.println(rcError.getMessage());
  }
}

REST

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename

Bu curl komutu için "@" karakterini ve ardından dosya adını kullanarak içeriği belirtebilirsiniz.

İndirilen şablonlara Remote Config kişiselleştirmeler ve koşullar dahil edilir. Bu nedenle, farklı bir projede yayınlamaya çalışırken aşağıdaki sınırlamalara dikkat etmeniz önemlidir:

  • Kişiselleştirmeler projeler arasında içe aktarılamaz.

    Örneğin, projenizde kişiselleştirmeler etkinse ve bir şablonu indirip düzenlerseniz bu şablonu aynı projede yayınlayabilirsiniz ancak şablondaki kişiselleştirmeleri silmediğiniz sürece farklı bir projede yayınlayamazsınız.

  • Koşullar projeden projeye içe aktarılabilir ancak belirli koşullu değerlerin (uygulama kimlikleri veya kitleler gibi) yayınlamadan önce hedef projede bulunması gerektiğini unutmayın.

    Örneğin, iOS platform değerini belirten bir koşul kullanan Remote Config parametreniz varsa şablon başka bir projede yayınlanabilir. Çünkü platform değerleri tüm projeler için aynıdır. Ancak hedef projede bulunmayan belirli bir uygulama kimliğine veya kullanıcı kitlesine dayalı bir koşul içeriyorsa doğrulama başarısız olur.

  • Yayınlamayı planladığınız şablon Google Analytics kullanan koşullar içeriyorsa hedef projede Analytics etkinleştirilmelidir.

Remote Config şablon varsayılanlarını indirme

Uygulamanız her zaman internete bağlı olmayabileceğinden tüm Remote Config parametreleri için istemci tarafı uygulama varsayılan değerlerini yapılandırmanız gerekir. Ayrıca, uygulamanızın istemci varsayılan değerlerini ve Remote Config arka uç varsayılan parametre değerlerini düzenli olarak senkronize etmeniz gerekir. Bu değerler zaman içinde değişebilir.

Bu bölümün sonundaki platforma özel bağlantılarda açıklandığı gibi, bu varsayılanları uygulamanızda manuel olarak ayarlayabilir veya etkin Remote Config şablonundaki tüm parametreler ve varsayılan değerleri için yalnızca anahtar/değer çiftlerini içeren dosyaları indirerek bu süreci kolaylaştırabilirsiniz. Ardından bu dosyayı projenize ekleyebilir ve uygulamanızı bu değerleri içe aktaracak şekilde yapılandırabilirsiniz.

Bu dosyaları Android uygulamaları için XML biçiminde, iOS uygulamaları için özellik listesi (plist) biçiminde ve web uygulamaları için JSON biçiminde indirebilirsiniz.

Uygulamanızın ve Remote Config arka ucunun senkronize kalması için yeni bir uygulama sürümünden önce Remote Config varsayılanlarını düzenli olarak indirin.

Şablon varsayılanlarını içeren bir dosyayı şu şekilde indirebilirsiniz:

REST

curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'

İndirmek istediğiniz dosya biçimine bağlı olarak format değeri için XML, PLIST veya JSON kullanın.

Firebase konsolu

  1. Firebase konsolunda DevOps & Engagement > Remote Config > Parameters sayfasına gidin.

  2. Menü'yü açın ve Varsayılan değerleri indir'i seçin.

  3. İstendiğinde, indirmek istediğiniz dosya biçimine karşılık gelen radyo düğmesini ve ardından Dosyayı indir'i tıklayın.

Remote Config varsayılan değerlerini uygulamanıza aktarma hakkında daha fazla bilgi için şu makaleleri inceleyin: