Uzaktan Yapılandırma Şablonları ve Sürüm Oluşturma

Remote Config şablonu, Firebase projeniz için oluşturduğunuz JSON biçimli parametrelerden ve koşullardan oluşan sunucu tarafı kümesidir. Şablonun içeriğini Parametreler ve Koşullar sekmelerinde grafik biçiminde 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 REST API'yi ve Admin SDK'yı veya Firebase CLI'yi de kullanabilirsiniz.

Aşağıda bir şablon 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"
    }
  }

Parametreleri her güncellediğinizde Remote Config, yeni sürümlü bir Remote Config şablonu oluşturur ve önceki şablonu, gerektiğinde alabileceğiniz veya geri alabileceğiniz bir sürüm olarak saklar. Sürüm numaraları, Remote Config tarafından saklanan başlangıç ​​değerinden itibaren 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:

  • Saklanan tüm şablon sürümlerini listele
  • Belirli bir sürümü alın
  • Belirli bir sürüme geri dönme

Remote Config şablonlarını gerektiği gibi Remote Config konsolundaki Değişiklik geçmişi sayfasından silebilirsiniz. Silinen şablonlar için saklanan sürüm numaralarını da içeren toplam 300 ömür boyu saklanan sürüm sınırı vardı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 korunur.

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

Bu bölümde Remote Config şablonunuzun sürümlerini nasıl yöneteceğiniz 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ştirme .

Remote Config şablonunun tüm kayıtlı sürümlerini listeleyin

Remote Config şablonunun kayıtlı tüm 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İNLENMEK

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, geri alma işleminden mi kaynaklandığına yoksa bunların şablonun zorunlu olarak kaydedilmesinden kaynaklanan artımlı değişiklikler mi olduğuna ilişkin bilgileri içerir.

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'ı iletin.

Şablon listesi, güncellemenin zamanı, güncellemeyi yapan kullanıcı ve güncellemenin konsol veya REST API aracılığıyla yapılıp yapılmadığı dahil, depolanan tüm sürümlere ilişkin meta verileri içerir. Burada bir version öğ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 herhangi bir belirli kayıtlı sürümünü alabilirsiniz. Örneğin:

Node.js

Şablonun en son sürümünü almak için getTemplate() işlevini hiçbir argüman olmadan iletin veya belirli bir sürümü almak için getTemplateAtVersion() öğesini 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İNLENMEK

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 bunu kullanamazsınız. ?version_number parametresi olmayan 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 onu seçin.

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

Firebase CLI

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 kayıtlı sürümüne geri dönün

Şablonun kayıtlı 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İNLENMEK

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

Firebase konsolu

Geri almaya uygun ö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önmeye yönelik bir seçenek düğmesi görüntülenir. Yalnızca söz konusu sürüme geri dönmek ve bu değerleri tüm uygulamalar ve kullanıcılar için hemen kullanmak istediğinizden eminseniz bunu tıklayın ve onaylayın.

Firebase CLI

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önüş, sürüm 6'nın yeni bir kopyasını etkili bir şekilde oluşturur; orijinalinden yalnızca sürüm numarasının 11 olması bakımından farklılık gösterir. Orijinal sürüm 6, son kullanma tarihinin dolmadığı varsayılarak hâlâ depolanır ve sürüm 11 etkin şablon haline gelir.

Remote Config şablonunu silme

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

  1. Remote Config Parameters ( Uzaktan Yapılandırma Parametreleri) sayfasında, Değişiklik geçmişi 'ni tıklayın.

  2. Silmek istediğiniz şablona geçin, Diğer 'i tıklayın ve 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 parametreleri ve değerleri birden fazla projede senkronize 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. Daha sonra 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 fazla projeniz olduğunu varsayalım. Bu durumda, tamamen test edilmiş bir şablonu hazırlama ortamınızdan üretim ortamınıza, hazırlama projenizden indirip üretim projenizde yayınlayarak tanıtabilirsiniz.

Bu yöntemi, konfigürasyonları bir projeden diğerine geçirmek veya yeni bir projeyi kurulu bir projedeki parametreler ve değerlerle doldurmak için de kullanabilirsiniz.

Bir A/B Testi denemesinde özel olarak varyantlar 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 Uzaktan Yapılandırma Yapılandırma şablonunu indirin .
  2. Remote Config şablonunu doğrulayın .
  3. Remote Config şablonunu yayımlayın .

Geçerli Uzaktan Yapılandırma Şablonunu indirin

Geçerli ve etkin Remote Config şablonunu programlı olarak veya Firebase konsolunu kullanarak indirebilirsiniz.

Etkin Remote Config şablonunu JSON formatında 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İNLENMEK

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. Uzak Yapılandırma Parametreleri veya Koşulları sekmesinden Menüsünü açın ve Geçerli yapılandırma dosyasını indir seçeneğini seçin.
  2. İstendiğinde Yapılandırma dosyasını indir'e tıklayın, dosyayı kaydetmek istediğiniz konumu seçin ve ardından Kaydet'e tıklayın.

Firebase CLI

firebase remoteconfig:get -o filename

Remote Config şablonunu doğrulayın

Firebase Admin SDK'yı veya REST API'yi kullanarak şablon güncellemelerinizi yayınlamadan önce 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 var olmayan koşullar veya yanlış biçimlendirilmiş ETag'ler gibi hataları kontrol eder. Örneğin, izin verilen sayıdan (2000) 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İNLENMEK

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 son ekiyle 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ımlayın

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

Bir şablonun yayınlanması, mevcut yapılandırma şablonunun tamamını güncellenen dosyayla değiştirir ve şablon sürümünü birer birer artırır. Yapılandırmanın tamamı değiştirildiği için JSON dosyasından bir parametreyi silip yayınlarsanız parametre sunucudan silinir ve artık istemciler tarafından kullanılamaz.

Yayınlamanın ardından parametrelerde ve değerlerde yapılan değişiklikler, uygulamalarınız ve kullanıcılarınız için hemen kullanılabilir. Gerekirse önceki 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İNLENMEK

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

Firebase konsolu

  1. Uzaktan Yapılandırma Parametreleri veya Koşulları sekmesinden Menüsünü açın ve Bir dosyadan yayınla seçeneğini seçin.
  2. İstendiğinde Gözat'a tıklayın, yayınlamak istediğiniz Remote Config dosyasına gidin ve onu 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 dahil olduğundan, 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, bunu aynı projede yayınlayabilirsiniz ancak şablondan kişiselleştirmeleri silmediğiniz sürece bunu farklı bir projede yayınlayamazsınız.

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

    Örneğin, iOS platform değerini belirten bir koşulu kullanan bir Remote Config parametreniz varsa platform değerleri her proje için aynı olduğundan şablon başka bir projeye 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 dayalı koşullar içeriyorsa, hedef projede Analytics'in etkinleştirilmesi gerekir.

Remote Config şablonu varsayılanlarını 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. Ayrıca zaman içinde değişebileceklerinden, uygulama istemcinizin varsayılan değerlerini ve Remote Config arka uç varsayılan parametre değerlerini 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. etkin Uzak Yapılandırma şablonu. 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 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 kalmasını sağlamak için yeni bir uygulama yayınlanmadan önce Remote Config varsayılanlarını düzenli olarak indirmenizi öneririz.

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

DİNLENMEK

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üsünü açın ve Varsayılan değerleri indir seçeneğini seçin.
  2. İstendiğinde, indirmek istediğiniz dosya biçimine karşılık gelen radyo düğmesini ve ardından Dosyayı indir seçeneğini tıklayın.

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