Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Remote Config şablonu, Firebase projeniz için oluşturduğunuz sunucu tarafı JSON biçimli parametreler ve koşullar kümesidir. Şablonun içeriğini Parametreler ve Koşullar sekmelerinde grafik biçimde görüntüleyen Firebase konsolunu kullanarak şablonu değiştirebilir ve yönetebilirsiniz. Yapılandırmanızı değiştirmek ve yönetmek için Remote Config arka uç API'lerini veya Firebase CLI'yi de kullanabilirsiniz.

İşte bir şablon dosyası örneği:

  {
    "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"
    }
  }

Parametreleri her güncellediğinizde, Remote Config yeni sürüme sahip bir Remote Config şablonu oluşturur ve önceki şablonu gerektiğinde geri alabileceğiniz veya geri alabileceğ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ü al
  • Belirli bir sürüme geri dönün

Remote Config şablonlarını yönetirken süre sonu eşiğini göz önünde bulundurun: Uygulamanız tarafından kullanılan geçerli etkin Remote Config şablonunun süresi dolmaz ; ancak, bir güncelleme ile değiştirilirse, önceki sürüm yalnızca 90 gün boyunca saklanır ve bu sürenin sonunda geçerliliği sona erer ve geri alınamaz. Ayrıca toplam 300 kayıtlı sürüm sınırı vardır. Bu sınırların dışında bir şablonu saklamak veya geri almak istiyorsanız, onu manuel olarak kaydedin ve saklayın.

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

Bu bölümde, Remote Config şablonunuzun sürümlerinin nasıl yönetileceği açıklanmaktadır. Şablonların programlı olarak nasıl oluşturulacağı, değiştirileceği ve kaydedileceği hakkında daha fazla ayrıntı için bkz. Remote Config'i programlı olarak değiştirin .

Remote Config şablonunun tüm saklanan sürümlerini listeleyin

Remote Config şablonunun tüm saklanan sürümlerinin bir listesini alabilirsiniz. Örneğin:

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

DİNLENME

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. Bu, sağdaki bir liste menüsünde saklanan tüm şablon sürümlerini listeleyen Değişiklik geçmişi sayfasını açar.

Saklanan her sürüm için görüntülenen ayrıntılar, değişikliklerin Konsoldan mı, REST API'den mi, bir geri almadan mı yoksa şablonun zorunlu olarak kaydedilmesinden kaynaklanan artımlı değişiklikler mi olduğuna ilişkin bilgileri içerir.

Firebase CLI'sı

firebase remoteconfig:versions:list

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

Şablon listesi, güncellemenin zamanı, güncellemeyi yapan kullanıcı ve konsol veya REST API aracılığıyla yapılıp yapılmadığı da dahil olmak üzere depolanan tüm sürümler için meta verileri içerir. İşte bir sürüm öğesi örneği:

{
  "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 saklanan herhangi bir sürümünü alabilirsiniz. Örneğin:

Node.js

Şablonun en son sürümünü almak için getTemplate() herhangi bir argüman olmadan 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());

DİNLENME

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 için kullanamazsınız. ?version_number parametresi olmadan benzer bir alma isteği, geçerli etkin şablonu alır.

Firebase konsolu

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

Seçili olmayan herhangi bir sürüm için içerik menüsünün üzerine gelip Seçilen sürümle karşılaştır'ı seçerek, seçili olan sürüm ile diğer kayıtlı sürüm arasındaki ayrıntılı farkı görüntüleyebilirsiniz.

Firebase CLI'sı

firebase remoteconfig:get -v VERSION_NUMBER

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

Remote Config şablonunun belirli bir depolanmış sürümüne geri dönün

Şablonun saklanan herhangi bir sürümüne geri dönebilirsiniz. Örneğin:

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

DİNLENME

Saklanan bir Remote Config şablonuna geri dönmek için özel yöntemle :rollback ve istek gövdesinde uygulanacak belirli sürümle bir HTTP POST düzenleyin. Ö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, yeni sürüm meta verileriyle birlikte şu anda etkin olan depolanan şablonun içeriğini içerir.

Firebase konsolu

Geri alma için uygun olan önceki şablon sürümleri için, Değişiklik geçmişi sayfasının sağ üst kısmında o sürüme geri dönmek için bir seçenek düğmesi görüntülenir. Bunu yalnızca o sürüme geri dönmek ve bu değerleri tüm uygulamalar ve kullanıcılar için hemen kullanmak istediğinizden eminseniz tıklayın ve onaylayın.

Firebase CLI'sı

firebase remoteconfig:rollback -v VERSION_NUMBER

Bu geri alma işleminin etkili 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önmek, sürüm 6'nın yeni bir kopyasını etkili bir şekilde oluşturur, yalnızca sürüm numarasının 11 olması bakımından orijinalinden farklıdır. Orijinal sürüm 6, son kullanma tarihinin geçmediği varsayılarak hala depolanır ve sürüm 11 aktif şablon olur.

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

Kaynak kontrol ve derleme sistemlerinize entegre etmek, yapılandırma güncellemelerini otomatikleştirmek ve parametreleri ve değerleri birden fazla projede senkronize halde tutmak için Remote Config şablonlarını indirin ve yayınlayın.

Şu anda etkin olan Remote Config şablonunu program aracılığıyla 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.

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

Konfigürasyonları bir projeden diğerine geçirmek veya yeni bir projeyi yerleşik bir projeden parametreler ve değerlerle doldurmak için de bu yöntemi kullanabilirsiniz.

Bir A/B Testi denemesinde değişkenler olarak özel 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. Mevcut Remote Config Config şablonunu indirin .
  2. Remote Config şablonunu doğrulayın .
  3. Remote Config şablonunu yayınlayın .

Geçerli Remote Config Şablonunu indirin

Geçerli ve etkin Remote Config şablonunu program aracılığıyla 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());

DİNLENME

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

Firebase konsolu

  1. Uzak Yapılandırma Parametreleri veya Koşullar sekmesinden Menüsünü açın ve Geçerli yapılandırma dosyasını indir öğesini seçin.
  2. İstendiğinde, Yapılandırma dosyasını indir seçeneğine tıklayın, dosyayı kaydetmek istediğiniz konumu seçin ve ardından Kaydet seçeneğine tıklayın.

Firebase CLI'sı

firebase remoteconfig:get -o filename

Remote Config şablonunu doğrulayın

Firebase Admin SDK veya REST API kullanarak şablon güncellemelerinizi yayınlamadan önce doğrulayabilirsiniz. Firebase CLI veya Firebase konsolundan yayınlamaya çalıştığınızda da şablonlar 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 veya 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());
  }
}

DİNLENME

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 bir HTTP/2 durumu 200 ve -0 sonekine sahip güncellenmiş bir ETag bulacaksı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ınlayın

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

Bir şablonun yayınlanması, mevcut yapılandırma şablonunun tamamını güncellenmiş dosyayla değiştirir ve şablon sürümünü bir artırı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ımlamanın ardından, parametrelerinizde ve değerlerinizde 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:

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

DİNLENME

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. Uzak Yapılandırma Parametreleri veya Koşullar sekmesinden Menüsünü açın ve Dosyadan yayınla'yı seçin.
  2. İstendiğinde, Gözat'a tıklayın, yayınlamak istediğiniz Remote Config dosyasına gidin ve dosyayı seçin, ardından Seç'e tıklayın.
  3. Dosya doğrulanacak ve başarılı olursa, yapılandırmayı uygulamalarınız ve kullanıcılarınız için hemen kullanılabilir hale getirmek için Yayınla'ya tıklayabilirsiniz.

Remote Config kişiselleştirmeleri ve koşulları indirilen şablonlara dahildir, bu nedenle farklı bir projede yayınlamaya çalışırken aşağıdaki sınırlamaların farkında olmak önemlidir:

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

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

  • Koşullar projeden projeye 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şulu kullanan bir Remote Config parametreniz varsa, platform değerleri herhangi bir proje 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 dayanan 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, hedef projede Analytics'in etkinleştirilmesi gerekir.

Remote Config şablonu varsayılanlarını indirin

Uygulamanız her zaman İnternet'e 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, uygulama istemcisi varsayılan değerlerinizi ve Remote Config arka uç varsayılan parametre değerlerinizi zaman içinde değişebileceklerinden düzenli aralıklarla senkronize etmeniz gerekir.

Bu bölümün sonundaki platforma özel bağlantılarda açıklandığı gibi, uygulamanızda bu varsayılanları manuel olarak ayarlayabilir veya tüm parametreler için yalnızca anahtar/değer çiftlerini ve bunların varsayılan değerlerini içeren dosyaları indirerek bu işlemi kolaylaştırabilirsiniz. aktif Remote Config şablonu. Daha sonra bu dosyayı projenize dahil edebilir ve uygulamanızı bu değerleri içe aktaracak şekilde yapılandırabilirsiniz.

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

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

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

DİNLENME

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 dosya biçimini indirmek istediğinize bağlı olarak format değeri olarak XML , PLIST veya JSON kullanın.

Firebase konsolu

  1. Parametreler sekmesinde Menüsünü açın ve Varsayılan değerleri indir öğesini seçin.
  2. İstendiğinde, indirmek istediğiniz dosya biçimine karşılık gelen radyo düğmesini tıklayın ve ardından Dosyayı indir öğesini tıklayın.

Remote Config varsayılan değerlerini uygulamanıza aktarma hakkında daha fazla bilgi için bkz.: