Remote Config'i programatik olarak değiştirme

Bu dokümanda, Remote Config şablonu olarak bilinen JSON biçimli parametre ve koşullar grubunu programatik olarak nasıl okuyabileceğiniz ve değiştirebileceğiniz açıklanmaktadır. Bu sayede, arka uçta istemci uygulamasının istemci kitaplığını kullanarak getirebileceği şablon değişiklikleri yapabilirsiniz.

Remote Config REST API'yi veya bu kılavuzda açıklanan Admin SDK'leri kullanarak Remote Config değişikliklerini doğrudan kendi süreçlerinize entegre etmek için şablonu Firebase konsolunda yönetmeyi atlayabilirsiniz. Örneğin, Remote Config arka uç API'sini kullanarak:

  • Remote Config güncelleme planlanıyor. API çağrılarını bir cron işiyle birlikte kullanarak Remote Config değerlerini düzenli olarak değiştirebilirsiniz.
  • Kendi özel sisteminizden Firebase Remote Config'e verimli bir şekilde geçiş yapmak için yapılandırma değerlerini toplu olarak içe aktarın.
  • Sunucu tarafında gerçekleşen etkinliklere göre uygulamanızdaki değerleri değiştirerek Cloud Functions for Firebase ile Remote Config kullanın. Örneğin, uygulamanızda yeni bir özelliği tanıtmak için Remote Config'ü kullanabilir ve yeterli sayıda kullanıcının yeni özellikle etkileşime geçtiğini tespit ettiğinizde bu tanıtımı otomatik olarak devre dışı bırakabilirsiniz.

    Remote Config arka ucunun özel araçlar ve sunucularla etkileşimde bulunduğunu gösteren şema

Bu kılavuzun aşağıdaki bölümlerinde, Remote Config arka uç API'leri. Bu görevleri REST API üzerinden gerçekleştiren bazı kodları incelemek için aşağıdaki örnek uygulamalardan birine bakın:

Firebase Admin SDK'sını kullanarak Remote Config'i değiştirme

Admin SDK, ayrıcalıklı ortamlardan Firebase ile etkileşime geçmenize olanak tanıyan bir sunucu kitaplığı grubudur. Admin SDK, Remote Config'te güncelleme yapmanın yanı sıra Firebase kimlik jetonlarının oluşturulmasını ve doğrulanmasını, Realtime Database'den veri okumayı ve yazma işlemlerini vb. sağlar. Admin SDK ön koşulları ve kurulumu hakkında daha fazla bilgi edinmek için Firebase Admin SDK'yı sunucunuza ekleyin.

Tipik bir Remote Config akışında geçerli şablonu alabilir, bazı parametrelerin veya parametre gruplarının ve koşullarının bazılarını geri getirdikçe, şablonu oluşturup yayınlayabilirsiniz. Bu API çağrılarını yapmadan önce SDK'dan gelen istekleri yetkilendirmeniz gerekir.

SDK'yı başlatma ve API isteklerini yetkilendirme

Admin SDK öğesini parametre olmadan başlattığınızda SDK Google Uygulaması Varsayılan Kimlik Bilgileri ve FIREBASE_CONFIG ortam değişkenindeki seçenekleri okur. FIREBASE_CONFIG değişkeninin içeriği { ile başlıyorsa JSON nesnesi olarak ayrıştırılır. Aksi takdirde SDK, dizenin seçenekleri içeren JSON dosyasının adı.

Örneğin:

Node.js

const admin = require('firebase-admin');
admin.initializeApp();

Java

FileInputStream serviceAccount = new FileInputStream("service-account.json");
FirebaseOptions options = FirebaseOptions.builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .build();
FirebaseApp.initializeApp(options);

Mevcut Remote Config şablonunu alma

Remote Config şablonlarıyla çalışırken, şablonların sürümlere sahip olduğunu ve her sürümün oluşturulduğu andan güncellemeyle değiştirdiğiniz ana kadar sınırlı bir kullanım süresine sahip olduğunu unutmayın: 90 gün, toplamda 300 depolanan sürüm sınırı. Şablonlar ve Sürüm Oluşturma başlıklı makaleyi inceleyin konulu videomuzu izleyin.

Remote Config şablonunun geçerli etkin sürümünü JSON biçiminde almak için arka uç API'lerini kullanabilirsiniz.

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

Şablonu almak için:

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

Remote Config parametrelerini değiştirme

Remote Config parametrelerini ve parametre gruplarını programatik olarak değiştirebilir ve ekleyebilirsiniz. Örneğin, "new_menu" adlı mevcut bir parametre grubuna mevsimsel bilgilerin görünümünü kontrol etmek için bir parametre ekleyebilirsiniz:

Node.js

function addParameterToGroup(template) {
  template.parameterGroups['new_menu'].parameters['spring_season'] = {
    defaultValue: {
      useInAppDefault: true
    },
    description: 'spring season menu visibility.',
  };
}

Java

template.getParameterGroups().get("new_menu").getParameters()
        .put("spring_season", new Parameter()
                .setDefaultValue(ParameterValue.inAppDefault())
                .setDescription("spring season menu visibility.")
        );

API yeni parametreler ve parametreler oluşturmanızı sağlar veya varsayılan değerleri, koşullu değerleri ve açıklamaları değiştirebilir. Her durumda, şablonu yapmanızı sağlayan sorular.

Remote Config koşullarını değiştirme

Remote Config koşullarını ve koşullu değerleri programatik olarak değiştirebilir ve ekleyebilirsiniz. Örneğin, yeni bir koşul eklemek için:

Node.js

function addNewCondition(template) {
  template.conditions.push({
    name: 'android_en',
    expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']',
    tagColor: 'BLUE',
  });
}

Java

template.getConditions().add(new Condition("android_en",
        "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));

Her durumda, şablonu yapmanızı sağlayan sorular.

Remote Config arka uç API'leri, uygulamanızın davranışını ve görünümünü değiştirmek için kullanabileceğiniz çeşitli koşullar ve karşılaştırma operatörleri sağlar. Koşullar ve bu koşullar için desteklenen operatörler hakkında daha fazla bilgi edinmek için koşullu ifade referansı bölümüne bakın.

Remote Config şablonunu doğrulama

İsteğe bağlı olarak, güncellemelerinizi yayınlamadan önce aşağıda gösterildiği gibi doğrulayabilirsiniz:

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

Bu doğrulama süreci parametreler ve koşullar için yinelenen anahtarlar, geçersiz koşul adları, var olmayan koşullar veya yanlış biçimlendirilmiş etag'ler. Örneğin, izin verilen sayıdan daha fazla tuşlar (2000) Param count too large hata mesajını döndürür.

Remote Config şablonunu yayınlayın

Bir şablonu alıp istediğiniz şekilde revize ederek sonra yayınlayabilirsiniz. Bir şablonu bu makalede açıklandığı şekilde yayınlama bölümü, mevcut yapılandırma şablonunun tamamını güncellenmiş dosyayla değiştirir ve yeni etkin şablona yeni bir şablon bulmanız gerekir.

Gerekirse önceki sürüme geri dönmek için REST API'yi kullanabilirsiniz. Güncellemelerde hata riskini azaltmak için yayınlamadan önce doğrulama yapabilirsiniz.

Remote Config kişiselleştirme ve koşul dahil edildi indirilmiş şablonlardan yararlanabilirsiniz. Bu nedenle, kullanabileceğiniz bazı kısıtlamalar vardır:

  • Kişiselleştirmeler 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ğerlerin (ör. uygulama kimlikleri veya kitleler) yayınlanmadan önce hedef projede mevcut olması gerektiğini unutmayın.

    Ö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'e dayalı koşullar içeriyorsa Analytics hedef projede etkinleştirilmelidir.

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 API kullanarak Remote Config'i değiştirme

Bu bölümde, https://firebaseremoteconfig.googleapis.com adresindeki Remote Config REST API'nin temel özellikleri açıklanmaktadır. Tüm ayrıntılar için API referansına bakın.

API isteklerinin kimliğini doğrulamak ve yetkilendirmek için erişim jetonu alma

Firebase projeleri Google'ı destekler hizmet hesapları kullanıyorsanız Firebase'i çağırmak için kullanabileceğiniz uygulama sunucunuzdaki veya güvenilir ortamınızdaki sunucu API'leri Proje yöneticisi olarak yerel olarak kodlayın veya uygulamanızı şirket içine dağıtın edinilen kimlik bilgilerini kullanabilir bu hizmet hesabını kullanarak sunucu isteklerini yetkilendirebilir.

Bir hizmet hesabının kimliğini doğrulama ve hesabı yetkilendirme Firebase hizmetlerine erişmek için JSON biçiminde bir özel anahtar dosyası oluşturmanız gerekir biçimindedir.

Hizmet hesabınız için özel anahtar dosyası oluşturmak üzere:

  1. Firebase konsolunda Ayarlar > Hizmet Hesapları'nı açın.

  2. Yeni Gizli Anahtar Oluştur'u tıklayın, ardından Anahtar Oluştur'u tıklayarak onaylayın.

  3. Anahtarı içeren JSON dosyasını güvenli bir şekilde depolayın.

Bir hizmet hesabı aracılığıyla yetkilendirme yaparken, uygulamanıza kimlik bilgisi ekleyin. GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlayabilir veya hizmet hesabı anahtarının yolunu kodda açıkça iletebilirsiniz. İlk seçenek daha güvenlidir ve kesinlikle önerilir.

Ortam değişkenini ayarlamak için:

GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini, hizmet hesabı anahtarınızı içeren JSON dosyasının dosya yoluna ayarlayın. Bu değişken yalnızca mevcut kabuk oturumunuz için geçerlidir. Bu nedenle, yeni bir oturum açmak istiyorsanız değişkeni tekrar ayarlayın.

Linux veya macOS

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

Windows

Powerpoint ile:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

Yukarıdaki adımları tamamladıktan sonra Uygulama Varsayılan Kimlik Bilgileri (ADC) kimlik bilgilerinizi dolaylı yoldan belirleyerek hesap kimlik bilgilerini ele alacağız.

Firebase kimlik bilgilerinizi Google Kimlik Doğrulama Kitaplığı kısa ömürlü bir OAuth 2.0 erişim jetonu almak için tercih ettiğiniz dilde iletişim kurun:

node.js

 function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

Bu örnekte, Google API istemci kitaplığı isteğin kimliğini JSON web jetonu veya JWT. Daha fazla bilgi için bkz. JSON web jetonları.

Python

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

Java

public static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  return googleCredentials.getAccessToken().getTokenValue();
}

Erişim jetonunuzun süresi dolduktan sonra jeton yenileme yöntemi çağrılır. otomatik olarak alır.

Remote Config erişimini yetkilendirmek için kapsamı isteyin https://www.googleapis.com/auth/firebase.remoteconfig.

Remote Config şablonunu değiştirme

Remote Config şablonlarıyla çalışırken şunları unutmayın: ve her sürümün, sunulduğu andan itibaren sınırlı bir kullanım ömrüne sahip olduğunu oluşturma süresi, güncellemeyle değiştirdiğiniz zamana kadar: 90 gün (toplam sınırla birlikte) tanesinin %65'ini oluşturur. Daha fazla bilgi için Şablonlar ve Sürüm Yönetimi bölümüne bakın.

Mevcut Remote Config şablonunu alma

Etiketin mevcut etkin sürümünü almak için arka uç API'lerini kullanabilirsiniz. JSON biçiminde Remote Config şablonu.

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

Aşağıdaki komutları kullanın:

cURL

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 dosyaya yükleyebilirsiniz.

Ham HTTP isteği

Host: firebaseremoteconfig.googleapis.com

GET /v1/projects/my-project-id/remoteConfig HTTP/1.1
Authorization: Bearer token
Accept-Encoding: gzip

Bu API çağrısı, aşağıdaki JSON'u ve sonraki istek için kullanacağınız bir ETag içeren ayrı bir başlık döndürür.

Remote Config şablonunu doğrulama

İsterseniz, güncellemelerinizi yayınlamadan önce doğrulayabilirsiniz. Şablon güncellemelerini ekleyerek doğrulayın ekleme isteğiniz için ?validate_only=true URL parametresini kullanın. Yanıtta 200 durum kodu ve -0 son eki içeren güncellenmiş bir etag, güncellemenizin başarıyla doğrulandığı anlamına gelir. 200 olmayan tüm yanıtlar, JSON verilerinin yayınlanmadan önce düzeltmeniz gereken hatalar içerdiğini gösterir.

Remote Config şablonunu güncelleyin

Bir şablon aldıktan ve JSON içeriğini istediğiniz güncellemelerle düzelttikten sonra şablonu yayınlayabilirsiniz. Bir şablonu bu makalede açıklandığı şekilde yayınlama bölümü, mevcut yapılandırma şablonunun tamamını güncellenmiş dosyayla değiştirir ve yeni etkin şablona yeni bir şablon bulmanız gerekir.

Gerekirse önceki sürüme geri dönmek için REST API'yi kullanabilirsiniz. Güncelleme sırasındaki hata riskini azaltmak için şunları yapabilirsiniz: yayınlanmadan önce doğrulayın.

Remote Config kişiselleştirme ve koşul dahil edildi indirilmiş şablonlardan yararlanabilirsiniz. Bu nedenle, kullanabileceğiniz bazı kısıtlamalar vardır:

  • Kişiselleştirmeler 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ğerlerin (ör. uygulama kimlikleri veya kitleler) yayınlanmadan önce hedef projede mevcut olması gerektiğini unutmayın.

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

cURL

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.

Ham HTTP isteği

Host: firebaseremoteconfig.googleapis.com
PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1
Content-Length: size
Content-Type: application/json; UTF8
Authorization: Bearer token
If-Match: expected ETag
Accept-Encoding: gzip
JSON_HERE

Bu bir yazma isteği olduğundan ETag, bu komut tarafından değiştirilir ve güncellenmiş bir ETag, sonraki PUT komutunun yanıt başlıkları

Remote Config koşullarını değiştirme

Remote Config koşullarını ve koşullarını programatik olarak değiştirebilirsiniz. değerler. REST API ile değiştirmek için doğrudan şablonu düzenlemeniz gerekir ve koşulları dikkate almalıdır.

{
  "conditions": [{
    "name": "android_english",
    "expression": "device.os == 'android' && device.country in ['us', 'uk']",
    "tagColor": "BLUE"
  }, {
    "name": "tenPercent",
    "expression": "percent <= 10",
    "tagColor": "BROWN"
  }],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "tenPercent": {
          "value": "Welcome to this new sample app"
        }
      },
      "description": "The sample app's welcome message"
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      },
      "conditionalValues": {
        "android_english": {
          "value": "true"
        }
      },
      "description": "Whether the welcome message should be displayed in all capital letters."
    }
  }
}

Yukarıdaki değişiklikler önce bir dizi koşulu, ardından her parametre için varsayılan değerleri ve koşula dayalı parametre (koşullu değerler) değerlerini tanımlar. Ayrıca her reklam öğesi için isteğe bağlı öğe; Bunlar geliştirici kullanımı içindir ve burada gösterilmez inceleyebilirsiniz. ETag, sürüm kontrolü amacıyla da sağlandığından emin olun.

Remote Config arka uç API'leri, uygulamanızın davranışını ve görünümünü değiştirmek için kullanabileceğiniz çeşitli koşullar ve karşılaştırma operatörleri sağlar. Koşullar ve bu koşullar için desteklenen operatörler hakkında daha fazla bilgi edinmek için koşullu ifade referansı bölümüne bakın.

HTTP hata kodları

Durum Kodu Anlamı
200 Başarıyla Güncellendi
400 Doğrulama hatası oluştu. Örneğin, izin verilen anahtar sayısından (2.000) fazla anahtar içeren bir istek, Param count too large hata mesajıyla birlikte 400 (Hatalı İstek) döndürür. Ayrıca bu HTTPS durum kodu aşağıdaki iki durumda da ortaya çıkabilir:
  • Son ETag değerini almanızın üzerinden geçen süre içinde değer ve koşul grubu güncellendiği için sürüm uyuşmazlığı hatası oluştu. Bu sorunu çözmek için GET komutu kullanarak yeni bir şablon ve ETag değeri alıp şablonu güncellemeniz ve bu şablonu ve yeni ETag değerini kullanarak göndermeniz gerekir.
  • If-Match başlığı belirtilmeden bir PUT komutu (Remote Config şablonunu güncelleme isteği) gönderildi.
401 Bir yetkilendirme hatası oluştu (erişim jetonu sağlanmadı veya Firebase Remote Config REST API şu konumdaki projenize eklenmedi: Cloud Developer Console)
403 Bir kimlik doğrulama hatası oluştu (yanlış erişim jetonu sağlandı)
500 Dahili bir hata oluştu. Bu hata oluşursa Firebase destek kaydı oluşturun

200 durum kodu, Remote Config şablonunun (projenin parametreleri, değerleri ve koşulları) güncellendiği ve artık bu projeyi kullanan uygulamalar tarafından kullanılabileceği anlamına gelir. Diğer durum kodları, daha önce var olan Remote Config şablonunun hâlâ geçerli olduğunu gösterir.

Şablonunuza güncelleme gönderdikten sonra, değişikliklerinizin beklendiği gibi göründüğünü doğrulamak için Firebase konsoluna gidin. Koşulların sırası, nasıl değerlendirildiklerini etkilediği için bu durum kritiktir (true değerini değerlendiren ilk koşul geçerli olur).

ETag kullanımı ve zorunlu güncellemeler

Remote Config REST API, yarış koşullarını önlemek için bir varlık etiketi (ETag) kullanır kaynaklarda yapılan çakışan güncellemeler. ETag'ler hakkında daha fazla bilgi için ETag - HTTP.

Google, REST API için en son GET komutu tarafından sağlanan ETag değerini önbelleğe almanızı ve PUT komutları verirken bu ETag değerini If-Match istek üstbilgisinde kullanmanızı önerir. PUT komutunuz 409 HTTPS durum koduyla sonuçlanırsa bir sonraki PUT komutunuzda kullanabileceğiniz yeni bir ETag ve şablon edinmek için yeni bir GET komutu göndermeniz gerekir.

ETag'i ve sağladığı korumayı atlatmak için Remote Config şablonunun şu şekilde güncellenmesini zorlayın: If-Match: * Ancak bu yaklaşım önerilmez çünkü kaybın birden fazla müşteriRemote Config Remote Config şablonu. Bu tür bir çakışma, API'yi kullanan birden fazla istemci veya API istemcileri ile Firebase konsol kullanıcılarından gelen çakışan güncellemeler nedeniyle ortaya çıkabilir.

Remote Config şablon sürümünü yönetme konusunda yardım için bkz. Remote Config şablonları ve sürüm oluşturma.