Remote Config Şablonları ve Sürüm Oluşturma

Remote Config şablonları, Firebase projeniz için oluşturduğunuz JSON biçiminde parametre ve koşul kümeleridir. Uygulamanızın değerleri aldığı client şablonları ve sunucu istemcilerinin değerleri getirebileceği sunucu şablonları oluşturabilirsiniz.

Şablonu değiştirir ve yönetirsiniz. Firebase konsolunu kullanarak şablonun içeriğini Parametreler ve Koşullar sekmelerinde grafik biçiminde görüntülersiniz. İstemci şablonunuzu değiştirmek ve yönetmek için Remote Config REST API ve Admin SDK'yı 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"
        }
      }

Sunucu şablonu dosyasının bir örneğini burada bulabilirsiniz:

{
  "parameters": {
    "preamble_prompt": {
      "defaultValue": {
        "value": "You are a helpful assistant who knows everything there is to know about Firebase! "
      },
      "description": "Add this prompt to the user's prompt",
      "valueType": "STRING"
    },
    "model_name": {
      "defaultValue": {
        "value": "gemini-pro-test"
      },
      "valueType": "STRING"
    },
    "generation_config": {
      "defaultValue": {
        "value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
      },
      "valueType": "JSON"
    },
  },
  "version": {
    "versionNumber": "19",
    "isLegacy": true
  }
}

Firebase konsoluyla aşağıdaki sürüm yönetimi görevlerini gerçekleştirebilirsiniz:

  • Depolanan tüm şablon sürümlerini listeleyin
  • Belirli bir sürümü alma
  • Belirli bir istemci sürümüne geri döndür
  • Remote Config şablonlarını Değişiklik geçmişi sayfasından silin

İstemci şablonlarını yönetiyorsanız Firebase CLI ve Remote Config arka uç API'lerini kullanarak şablonları listeleyebilir, şablonları alabilir ve şablonları geri çekebilirsiniz.

Şablon türü başına ömür boyu depolanan sürüm sayısı (300 istemci şablonu ve 300 sunucu şablonu) toplam sınırı vardır. Bu sınır, silinen şablonların depolanan sürüm numaralarını da kapsar. Bir projenin ö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 maksimum 300 sürüm tutulur.

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

Firebase konsolu, Firebase CLI veya Remote Config arka uç API'leri ile şu sürüm yönetimi görevlerini gerçekleştirebilirsiniz:

  • Depolanan tüm şablon sürümlerini listeleyin
  • Belirli bir sürümü alma
  • Belirli bir sürüme döndür

Remote Config şablonlarını, Remote Config konsolundaki Değişiklik geçmişi sayfasından gerektiği şekilde silebilirsiniz. Silinen şablonlar için depolanan sürüm numaraları da dahil olmak üzere, kullanım ömrü boyunca depolanan toplam sürüm sınırı 300'dür. Bir projenin ömrü boyunca 300'den fazla şablon sürümü yayınlarsanız en eski sürümler silinir ve maksimum 300 sürüm kullanılabilir.

Remote Config şablon sürümlerini yönetin

Bu bölümde Remote Config şablonlarınızın 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'i programatik olarak değiştirme bölümüne bakın.

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

Remote Config şablonunun depolanmış tüm sürümlerinin listesini alabilirsiniz. Örnek:

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 <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:listVersions

Firebase konsolu

Parametreler sekmesinde, sağ üstte görüntülenen "saat" simgesini seçin. Bunu yaptığınızda, sağdaki liste menüsünde depolanan tüm şablon sürümlerinin listelendiği Değişiklik geçmişi sayfası açılır.

Depolanan her sürüm için gösterilen ayrıntılar, değişikliklerin Console'dan mı, REST API'den mi kaynaklandığı veya bir geri alma işlemiyle mi kaynaklandığı veya şablonun zorunlu olarak kaydedilmesinden kaynaklanan artımlı değişiklikler olup olmadığı bilgisini içerir.

Firebase CLI

firebase remoteconfig:versions:list

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

Şablon listesi; güncelleme zamanı, güncellemeyi yapan kullanıcı ve konsol aracılığıyla mı yoksa REST API aracılığıyla mı yapıldığı da dahil olmak üzere depolanan tüm sürümler için meta verileri içerir. Aşağıda sürüm öğesinin bir ö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ü alın

Remote Config şablonunun depolanan belirli bir sürümünü alabilirsiniz. Örnek:

Node.js

Şablonun en son sürümünü almak için bağımsız değişken olmadan getTemplate() iletin veya belirli bir sürümü almak için getTemplateAtVersion() 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 <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig?version_number=6

?version_number URL parametresi yalnızca GET işlemleri için geçerlidir. Bu parametreyi güncellemelere ilişkin sürüm numaralarını belirtmek için kullanamazsınız. ?version_number parametresi içermeyen benzer bir "get" isteği, mevcut etkin şablonu alır.

Firebase konsolu

Varsayılan olarak, Değişiklik geçmişi sekmesindeki ayrıntılar bölmesinde geçerli etkin şablon görüntülenir. Listedeki başka bir sürümün ayrıntılarını görüntülemek için sağdaki menüden sürümü seçin.

Seçili olmayan herhangi bir sürümün içerik menüsünün üzerine fareyle gelip Seçilen sürümle karşılaştır'ı seçerek o anda seçili olan sürüm ile saklanan diğer sürümlerin ayrıntılı farklarını görebilirsiniz.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

Dilerseniz çıkışı belirli bir dosyaya -o, FILENAME ile yazabilirsiniz.

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

Şablonun depolanmış herhangi bir sürümüne geri dönebilirsiniz. Örnek:

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

Depolanmış bir Remote Config şablonuna geri dönmek için :rollback özel yöntemiyle bir HTTP POST gönderin ve istek gövdesinde uygulanacak belirli sürümü belirtin. Örnek:

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

Yanıt, şu anda etkin olan depolanan şablonun içeriğini yeni sürüm meta verileriyle birlikte içerir.

Firebase konsolu

Geri alma için uygun olan önceki şablon sürümlerinde, Değişiklik geçmişi sayfasının sağ üst köşesinde ilgili sürüme dönme seçeneği düğmesi gösterilir. Bunu yalnızca ilgili sürüme geri dönmek ve bu değerleri tüm uygulamalar ile kullanıcılar için hemen kullanmak istediğinizden eminseniz tıklayın ve onaylayın.

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

Bu geri alma işleminin etkin bir şekilde yeni bir numaralı sürüm oluşturduğunu unutmayın. Örneğin, sürüm 10'dan sürüm 6'ya geri döndürüldüğünde, sürüm 6'nın yeni bir kopyası etkin bir şekilde oluşturulur. Bu kopya, yalnızca sürüm numarasının 11 olmasıyla orijinal sürümden farklıdır. Orijinal sürüm 6, kullanım süresinin dolmadığı varsayılarak saklanır ve sürüm 11 etkin şablon haline gelir.

Remote Config şablonu silme

Remote Config şablonlarını Firebase konsolundan silebilirsiniz. Remote Config şablonunu silmek için:

  1. Remote Config Parametreleri sayfasında Değişiklik geçmişi'ni tıklayın.

  2. Silmek istediğiniz şablona gidip Diğer'i tıklayın, ardından Sil'i seçin.

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

Remote Config şablonlarını indirin ve yayınlayın

Kaynak kontrolü ve derleme sistemlerinize entegre etmek, yapılandırma güncellemelerini otomatikleştirmek ve parametreler ile değerlerin birden fazla projede senkronize olmasını sağlamak için Remote Config şablonlarını indirip yayınlayın.

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

Geliştirme, test, hazırlık ve üretim ortamları gibi yazılım geliştirme yaşam döngüsünün farklı aşamalarını temsil eden birden fazla projeniz olduğunu varsayalım. Bu durumda, tamamen test edilmiş bir şablonu hazırlık projenizden indirip üretim projenize yayınlayarak üretim ortamınıza yükseltebilirsiniz.

Bu yöntemi bir projeden diğerine yapılandırmaları taşımak veya yeni bir projeyi oluşturduğunuz bir projedeki parametre ve değerlerle doldurmak için de bu yöntemi kullanabilirsiniz.

Özel olarak A/B Testi denemesinde varyant olarak oluşturulan parametreler ve parametre değerleri dışa aktarılan şablonlara dahil edilmez.

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

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

Mevcut Remote Config şablonunu indirin

Mevcut ve etkin Remote Config şablonunu programatik olarak veya Firebase konsolunu kullanarak indirebilirsiniz.

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

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, JSON yükünü bir dosyaya ve başlıkları (ETag dahil) ayrı bir headers dosyasına çıkarır.

Firebase konsolu

  1. Remote Config Parametreleri veya Koşulları sekmesinden Menü'yü açın ve Geçerli yapılandırma dosyasını indir'i seçin.
  2. İstendiğinde Yapılandırma dosyasını indir'i tıklayın, dosyayı kaydetmek istediğiniz konumu seçin ve ardından Kaydet'i tıklayın.

Firebase CLI

firebase remoteconfig:get -o filename

Remote Config şablonunu doğrulayın

Şablon güncellemelerinizi yayınlamadan önce Firebase Admin SDK veya REST API'yi kullanarak doğrulayabilirsiniz. Şablonlar, Firebase CLI veya Firebase konsolundan yayınlamayı denediğinizde de doğrulanır.

Şablon doğrulama işlemi, parametreler ve koşullar için yinelenen anahtarlar, geçersiz koşul adları veya var olmayan koşullar ya da yanlış biçimlendirilmiş ETag'ler gibi hataları kontrol eder. Örneğin, izin verilen sayıdan (2000) 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

Yayınlama isteğinize ?validate_only=true URL parametresini ekleyerek şablon güncellemelerini doğrulayın:

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 HTTP/2 durumu 200 ile -0 son ekine sahip güncellenmiş bir ETag görürsünüz. Şablonunuz doğrulanmamışsa JSON yanıtında doğrulama hatası alırsınız ve headers dosyanız 200 olmayan bir yanıt içerir (ve ETag).

Remote Config şablonunu yayınlayın

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

Bir şablon yayınladığınızda, mevcut yapılandırma şablonunun tamamı güncellenmiş dosyayla değiştirilir ve şablon sürümü bir birim artar. 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ınlama işleminden sonra, parametrelerde ve değerlerde yapılan değişiklikler uygulamalarınıza ve kullanıcılarınıza anında sunulur. Gerekirse önceki bir sürüme geri dönebilirsiniz.

Şablonunuzu yayınlamak için aşağıdaki komutları kullanı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.

Firebase konsolu

  1. Remote Config Parametreleri veya Koşulları sekmesinde Menü'yü açın ve Bir dosyadan yayınla'yı seçin.
  2. İstendiğinde Browse'u (Göz at) tıklayın, yayınlamak istediğiniz Remote Config dosyasını bulup seçin ve Select'i (Seç) tıklayın.
  3. Dosya doğrulanır. İşlem başarılı olursa yapılandırmanın uygulamalarınız ve kullanıcılarınız için hemen kullanılabilir olması için Yayınla'yı tıklayabilirsiniz.

Remote Config kişiselleştirmeleri ve koşulları, indirilen şablonlara dahil edilir. Bu nedenle, farklı bir projeye yayınlamaya çalışırken aşağıdaki sınırlamalara dikkat etmek önemlidir:

  • Kişiselleştirmeler, projeden projeye aktarılamaz.

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

  • Koşullar, projeden projeye aktarılabilir ancak özel koşullu değerlerin (uygulama kimlikleri veya kitleler gibi) yayınlanmadan önce hedef projede mevcut olması gerektiğini unutmayın.

    Örneğin, iOS platform değerini belirten bir koşul kullanan Remote Config parametreniz varsa platform değerleri tüm projeler için aynı olduğundan şablon başka bir projede yayınlanabilir. 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'e dayanan koşullar içeriyorsa Analytics hedef projede etkinleştirilmelidir.

Remote Config şablonu varsayılanlarını indirin

Uygulamanız her zaman internete bağlı olmayabilir. Bu nedenle, tüm Remote Config parametreleri için istemci tarafı uygulama varsayılan değerlerini yapılandırmanız gerekir. Ayrıca zaman içinde değişebileceğinden uygulama istemcisi varsayılan değerleriniz ile Remote Config arka uç varsayılan parametre değerlerinizi düzenli olarak senkronize etmeniz gerekir.

Bu bölümün sonundaki platforma özel bağlantılarda açıklandığı gibi, bu varsayılan değerleri uygulamanızda manuel olarak ayarlayabilir veya tüm parametreler için yalnızca anahtar/değer çiftlerini ve etkin Remote Config şablonundaki varsayılan değerlerini içeren dosyaları indirerek bu işlemi kolaylaştırabilirsiniz. Daha sonra 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 mülk listesi (plist) biçiminde ve web uygulamaları için JSON biçiminde indirebilirsiniz.

Uygulamanızın ve Remote Config arka ucunun senkronize durumda kalmasını sağlamak için, yeni uygulama sürümlerinden önce Remote Config varsayılanlarını düzenli olarak indirmenizi öneririz.

Şablon varsayılanlarını içeren bir dosyayı indirmek için:

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 olarak XML, PLIST veya JSON kullanın.

Firebase konsolu

  1. Parametreler sekmesinde Menü'yü açın ve Varsayılan değerleri indir'i seçin.
  2. İ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 aşağıdaki konulara bakın: