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


Remote Config şablon, JSON biçimli gruplardır parametre ve koşulları tanımlayın. Siz Uygulamanızın değer getirdiği istemci şablonları oluşturabilir ve server şablonlarını kullanarak ayarlayın.

Bu bölümde müşteri şablonları açıklanmaktadır. Sunucuya özgü bilgiler, şablonları görmek için Sunucu şablonları.

Şablonu, görüntülenen Firebase konsolunu kullanarak değiştirir ve yönetirsiniz. şablonun içeriğinin grafik biçiminde Parameters (Parametreler) ve Koşullar sekmeleri.

Ayrıca şunu da kullanabilirsiniz: Remote Config REST API ve Yönetici SDK'sı veya Firebase KSA kullanarak şablonu oluşturabilirsiniz.

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

{
  "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 listele
  • Belirli bir sürümü alma
  • Belirli bir istemci sürümüne geri döndür
  • Remote Config şablonunu Değiştir geçmişi sayfa

Şablon türü başına toplam 300 ömür boyu depolanan sürüm sınırı vardır (300 istemci şablonu ve 300 sunucu şablonu) içeren sürüm numaraları. 300'den fazla içerik yayınlıyorsanız her şablon türü için ayrı ayrı şablon sürümü sayısı, en eski sürümler silinir ve en fazla 300 sürümü korunarak işleyeceğiz.

Parametreleri her güncellediğinizde Remote Config, yeni sürümlü bir Remote Config şablonu oluşturur ve önceki şablonu, gerektiğinde geri alabileceğiniz veya geri dönebileceğiniz bir sürüm olarak depolar. Sürüm numaraları Remote Config tarafından depolanan ilk değerden sonra sırayla artırılır. Tüm şablonlarda, gösterildiği gibi bu konuyla ilgili meta verileri içeren bir version alanı bulunur belirli bir sürüm.

Gerektiğinde Remote Config şablonu şuradan silebilirsiniz: Değişiklik geçmişi sayfa Remote Config konsolunda gösterilir.

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

Bu bölümde, Remote Config sürümlerinin nasıl yönetileceği açıklanmaktadır. tıklayın.

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

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

Firebase konsolu

Parametreler sekmesinde, "saat"i seçin simgesini tıklayın. Bu işlem, sağdaki bir liste menüsünde depolanan tüm şablon sürümlerini listeleyen Değişiklik geçmişi sayfasını açar.

Her bir depolanan sürüm için gösterilen ayrıntılar, değişikliklerin Console'dan mı, REST API'den mi, geri alma işleminden mi yoksa şablonun zorunlu olarak kaydedilmesinden mi kaynaklandığına dair bilgileri 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. Kart '0' komutunu çalıştırın.

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

Şablon listesi, güncellemenin zamanı, güncellemeyi yapan kullanıcı ve güncellemenin nasıl yapıldığı dahil olmak üzere depolanan tüm sürümlerin meta verilerini içerir. Sürüm öğesine örnek:

```json
{
  "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

Remote Config şablonunun depolanan belirli bir sürümünü alabilirsiniz. Depolanan bir şablonu almak için sürüm:

Firebase konsolu

Değişiklik geçmişi sekmesindeki ayrıntılar bölmesinde varsayılan olarak mevcut etkin şablon gösterilir. Görüntüleme ayrıntıları seçmek için sağ menüden seçim yapın.

Şu anda seçili olan sürümün ve diğer tüm sürümlerin ayrıntılı farkını sürümü için bağlam menüsünün üzerine gelin ve saklanan sürümü seçin. ve Seçili sürümle karşılaştır'ı seçin.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

İsteğe bağlı olarak, -o, FILENAME kullanarak çıktıyı belirtilen bir dosyaya yazabilirsiniz.

Node.js

getTemplate() bileti gerekiyor için bağımsız değişken kullanmadan, şablonun en son sürümünü veya belirli bir sürümü almak için getTemplateAtVersion() işlevini 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. Güncellemeler için sürüm numaralarını belirtmek amacıyla kullanılamaz. Benzer bir ?version_number olmadan istek parametresi geçerli etkin şablonu alır.

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

Şu anda YouTube'da saklanan seçin. Bir şablonu geri çekmek için:

Firebase konsol

Geri almaya uygun önceki şablon sürümlerinde geri dönmek için kullanabileceğiniz seçenek düğmesi, Değişiklik geçmişi sayfasını ziyaret edin. Bu işlemi yalnızca söz konusu uygulamaya geri dönmek istediğinizden eminseniz tıklayın ve onaylayın sürümünü indirmeli ve bu değerleri tüm uygulamalar ile kullanıcılar için hemen kullanabilir.

Firebase KSA

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 şununla bir HTTP POST yayınlayın: :rollback özel yöntemi ve istek gövdesinde, tıklayın. Örneğin:

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 verileri.

Bu geri alma işleminin numaralandırılmış yeni bir sürüm var. Örneğin, sürüm 10'dan sürüm 6'ya geri dönmek sürüm 6'nın yeni bir kopyasını oluşturur. yalnızca sürüm numarasının 11 olması gerekir. Süresi dolmadığı varsayılarak orijinal 6. sürüm depolanmaya devam eder ve 11. sürüm etkin şablon olur.

Bir Remote Config şablonunu sil

Remote Config şablonlarını Firebase konsolundan silebilirsiniz. Alıcı: bir Remote Config şablonunu silin:

1. Remote Config liginden Parametreler sayfada, tıklama Değişiklik geçmişi.
  1. Silmek istediğiniz şablona gidin ve Diğer'i tıklayın, ardından seçin Sil.

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

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

Remote Config şablonlarını indirip yayınlayarak kaynak denetimi ve derleme sistemleri, yapılandırma güncellemelerini otomatikleştirme ve parametreleri ve değerler birden çok projede senkronize edilir.

Şu anda etkin olan Remote Config şablonunu indirebilirsiniz Firebase konsolundan kontrol edebilirsiniz. Ardından dışa aktarılmış bir JSON dosyasını açın ve bunu aynı projeye yayınlayın ya da dosyayı yeni veya nasıl oluşturulduğunu göstereceğim.

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

Bu yöntemi kullanarak yapılandırmaları bir projeden veya yeni bir projeyi kabul edilir.

Belirli bir A/B Testing deneme, dışa aktarılan şablonlara dahil edilmedi.

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

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

Mevcut Remote Config şablonunu indirme

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

Firebase konsol

  1. Remote Config Parametreler veya Koşullar sekmesinde Menü'yü açın ve Mevcut yapılandırma dosyasını indir'i seçin.
  2. İstendiğinde Yapılandırma dosyasını indir'i tıklayın ve dosyayı kaydetmek istediğinizi seçin ve Kaydet'i tıklayın.

Firebase KSA

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

Remote Config şablonunu doğrulayın

Şablon güncellemelerinizi yayınlamadan önce şunları kullanarak doğrulayabilirsiniz: Firebase Admin SDK veya REST API. Şablonlar, Firebase KSA veya Firebase konsolundan yayınlayın.

Şablon doğrulama işleminde, parametreler ve koşullar için yinelenen anahtarlar, geçersiz koşul adları veya var olmayan koşullar ya da yanlış biçimlendirilmiş ETags gibi hatalar kontrol edilir. Örneğin, izin verilenden daha fazlasını içeren bir istek anahtar sayısı (2000) 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 ?validate_only=true URL parametresini ekleyerek doğrulayın ekleme talebi:

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 şablonu ve kaydedilen headers dosyasında HTTP/2 durumu 200 ve -0 son ekine sahip güncellenmiş bir ETag. Eğer şablonu doğrulanmadıysa doğrulama hatasını JSON yanıtı ve headers dosyanız 200 olmayan bir yanıt içerecek (ETag olmadan).

Remote Config şablonunu yayınlama

Şablonu indirdikten sonra JSON içeriğinde gerekli değişiklikleri yaptıktan sonra doğrulayarak bir projeye yayınlayabilirsiniz.

Bir şablon yayınladığınızda, mevcut yapılandırma şablonunun tamamını bir birim ekler ve şablon sürümünü bir birim artırır. Çünkü bir bütün JSON dosyasından bir parametre silerseniz ve parametre, sunucudan silinir ve artık kullanılamaz. sunmak zorundasınız.

Yayınlama işleminden sonra, parametrelerde ve değerlerde yapılan değişiklikler anında kullanılabilir hale gelir ve kullanıcılarınıza sunabilirsiniz. Gerekirse, önceki sürüme geri dönme başlıklı makaleye bakın.

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

Firebase konsolu

  1. Şuradan: Remote Config Parametre veya Koşullar sekmesinde, Menü'yü açın. Dosyadan yayınla'yı seçin.
  2. İstendiğinde Göz at'ı tıklayın, Yayınlamak istediğiniz Remote Config dosyayı, ardından Seç'i tıklayın.
  3. Dosya doğrulanır ve doğrulama başarılı olursa yapılandırmanızı uygulamalarınızda ve kullanıcılarınızda hemen kullanılabilir hale getirmek için Yayınla'yı tıklayabilirsiniz.

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 "@" işaretini kullanarak içeriği belirtebilirsiniz. karakteri ve ardından dosya adı yazın.

Remote Config kişiselleştirmeleri ve koşulları indirilen şablonlara dahil edilir. Bu nedenle, farklı bir projede yayınlamaya çalışırken aşağıdaki sınırlamaları göz önünde bulundurmanız önemlidir:

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

    Örneğin, projenizde kişiselleştirmeler etkinse ve bir şablon indirip düzenledikten sonra, oluşturduğunuz ama projeyi silmediğiniz sürece farklı bir projede yayınlayamazsınız bazı kişiselleştirmeler var.

  • Koşullar projeden projeye aktarılabilir ancak belirli koşullu değerler (ör. uygulama kimlikleri veya kitleler) önce hedef projeye odaklanacağız.

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

  • Yayınlamayı planladığınız şablon, Google Analytics, Analytics hedefte etkinleştirilmelidir belirler.

Remote Config varsayılan şablonu indirin

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. Uygulama istemcisi varsayılanınızı düzenli aralıklarla senkronize etmeniz de gerekir değerlerine ve Remote Config arka uç varsayılan parametre değerlerine zamanla değişebilir.

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 etkin Remote Config şablonunda tüm parametrelerin anahtar/değer çiftlerini ve varsayılan değerlerini yalnızca içeren dosyaları indirerek bu süreci kolaylaştırabilirsiniz. Ardından bu dosyayı projenize ekleyin ve uygulamanızı bu değerleri içe aktaracak şekilde yapılandırın.

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

Yeni dosyalardan önce Remote Config varsayılanlarını düzenli aralıklarla indirmenizi öneririz uygulamanızın ve Remote Config arka ucunun senkronize edin.

Şablon varsayılanlarını içeren bir dosya 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'

Hangi dosyaya bağlı olarak, format değeri olarak XML, PLIST veya JSON değerini kullanın biçimi seçin.

Firebase konsol

  1. Parametreler sekmesinde, Menü'yü açın ve Varsayılan değerleri indirin.
  2. İstendiğinde dosyaya karşılık gelen radyo düğmesini tıklayın. indirmek istediğiniz biçimi seçin ve ardından Dosyayı indir'i tıklayın.

Remote Config varsayılan değerini uygulamanız için aşağıdaki adımları uygulayın: