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 okuyup 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'si ile şunları yapabilirsiniz:

  • Remote Config güncellemelerini planlama. API çağrılarını bir cron işi ile birlikte kullanarak Remote Config değerlerini düzenli bir programda 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.
  • Remote Config'u Cloud Functions for Firebase ile birlikte kullanarak, uygulamanızdaki değerleri sunucu tarafında gerçekleşen etkinliklere göre değiştirin. Örneğin, uygulamanızdaki yeni bir özelliği tanıtmak için Remote Config kullanabilir ve yeterli sayıda kişinin yeni özellikle etkileşimde bulunduğunu tespit ettiğinizde tanıtımı otomatik olarak kapatabilirsiniz.

    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'leriyle yapabileceğiniz işlemler açıklanmaktadır. 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'sını sunucunuza ekleme bölümünü inceleyin.

Tipik bir Remote Config akışında, mevcut şablonu alabilir, parametrelerin veya parametre gruplarının ve koşulların bir kısmını değiştirebilir, şablonu doğrulayabilir ve ardından 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 parametresi olmadan başlattığınızda SDK, Google Uygulama Varsayılan Kimlik Bilgileri'ni kullanır ve seçenekleri FIREBASE_CONFIG ortam değişkeninden 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 bir JSON dosyasının adı olduğunu varsayar.

Ö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 bunların sürümler olduğunu ve her sürümün, oluşturulma zamanından güncelleme ile değiştirdiğiniz zamana kadar sınırlı bir kullanım ömrüne sahip olduğunu unutmayın: 90 gün (toplam 300 depolanan sürüm sınırıyla). Daha fazla bilgi için Şablonlar ve Sürüm Oluşturma bölümüne bakın.

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ştirin

Remote Config parametrelerini ve parametre gruplarını programatik olarak değiştirebilir ve ekleyebilirsiniz. Örneğin, "new_menu" adlı mevcut bir parametre grubuna sezonluk 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 parametre grupları oluşturmanıza veya varsayılan değerleri, koşullu değerleri ve açıklamaları değiştirmenize olanak tanır. Her durumda, değişiklikleri yaptıktan sonra şablonu açıkça yayınlamanız gerekir.

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, değişikliklerden sonra şablonu açıkça yayınlamanız gerekir.

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şullarda 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 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 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ş e-etiketler gibi hatalar kontrol edilir. Örneğin, izin verilen anahtar sayısından (2.000) fazla anahtar içeren bir istek, Param count too large hata mesajını döndürür.

Remote Config şablonunu yayınlama

Bir şablonu aldıktan ve istediğiniz güncellemelerle düzelttikten sonra yayınlayabilirsiniz. Bir şablonu bu bölümde açıklandığı gibi yayınladığınızda, mevcut yapılandırma şablonunun tamamı güncellenen dosyayla değiştirilir ve yeni etkin şablona, değiştirildiği şablondan bir numara daha büyük bir sürüm numarası atanır.

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

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ştirmeleri etkinleştirdiyseniz ve bir şablonu indirip düzenlediyseniz şablonu aynı projede yayınlayabilirsiniz ancak şablondaki kişiselleştirmeleri silmediğiniz sürece farklı bir projede yayınlayamazsınız.

  • 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, iOS platform değerini belirten bir koşul kullanan bir Remote Config parametreniz varsa platform değerleri her 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 dayalı bir koşul içeriyorsa doğrulama başarısız olur.

  • Yayınlamayı planladığınız şablon Google Analytics temel alınarak oluşturulan koşullar içeriyorsa hedef projede Analytics 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. Ayrıntılı bilgi için API referansı bölümüne bakın.

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

Firebase projeleri, Google hizmet hesaplarını destekler. Bu hesapları, uygulama sunucunuzdan veya güvenilir ortamınızdan Firebase sunucusu API'lerini çağırmak için kullanabilirsiniz. Yerel olarak kod geliştiriyorsanız veya uygulamanızı şirket içinde dağıtıyorsanız sunucu isteklerine yetki vermek için bu hizmet hesabı aracılığıyla edinilen kimlik bilgilerini kullanabilirsiniz.

Bir hizmet hesabının kimliğini doğrulamak ve bu hesabı Firebase hizmetlerine erişmesi için yetkilendirmek üzere JSON biçiminde bir özel anahtar dosyası oluşturmanız gerekir.

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

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

  2. Yeni Özel Anahtar Oluştur'u tıklayın ve ardından Anahtar Oluştur'u tıklayarak onaylayın.

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

Bir hizmet hesabı aracılığıyla yetkilendirme yaparken kimlik bilgilerini uygulamanıza sağlamak için iki seçeneğiniz vardır. GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlayabilir veya kodda hizmet hesabı anahtarına giden yolu açıkça geçirebilirsiniz. İ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çarsanız değişkeni tekrar ayarlayın.

Linux veya macOS

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

Windows

PowerShell 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ı olarak belirleyebilir. Böylece, Google dışı ortamlarda test ederken veya çalıştırırken hizmet hesabı kimlik bilgilerini kullanabilirsiniz.

Kısa süreli bir OAuth 2.0 erişim jetonu almak için Firebase kimlik bilgilerinizi tercih ettiğiniz dildeki Google Auth Library ile birlikte kullanın:

düğüm.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 ile doğrular. Daha fazla bilgi için JSON web jetonları başlıklı makaleyi inceleyin.

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, güncellenmiş bir erişim jetonu almak için jeton yenileme yöntemi otomatik olarak çağrılır.

Remote Config'e erişim yetkisi vermek için https://www.googleapis.com/auth/firebase.remoteconfig kapsamını isteyin.

Remote Config şablonunu değiştirme

Remote Config şablonlarıyla çalışırken bunların sürümler olduğunu ve her sürümün, oluşturulma zamanından güncelleme ile değiştirdiğiniz zamana kadar sınırlı bir kullanım ömrüne sahip olduğunu unutmayın: 90 gün (toplam 300 depolanan sürüm sınırıyla). Daha fazla bilgi için Şablonlar ve Sürüm Yönetimi bölümüne bakın.

Mevcut Remote Config şablonunu alma

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

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

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, üstbilgileri (Etag dahil) ise ayrı bir dosyaya yazar.

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

İsteğe bağlı olarak, güncellemelerinizi yayınlamadan önce doğrulayabilirsiniz. Yayın isteğinize ?validate_only=true URL parametresini ekleyerek şablon güncellemelerini doğrulayı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 bölümde açıklandığı gibi yayınladığınızda, mevcut yapılandırma şablonunun tamamı güncellenen dosyayla değiştirilir ve yeni etkin şablona, değiştirildiği şablondan bir numara daha büyük bir sürüm numarası atanır.

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ştirmeleri ve koşulları indirilen şablonlara dahil edilir. Bu nedenle, farklı bir projeye yayınlamayı denerken aşağıdaki sınırlamalara dikkat etmeniz önemlidir:

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

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

  • 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, iOS platform değerini belirten bir koşul kullanan bir Remote Config parametreniz varsa platform değerleri her 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 dayalı bir koşul içeriyorsa doğrulama başarısız olur.

  • Yayınlamayı planladığınız şablon Google Analytics temel alınarak oluşturulan koşullar içeriyorsa hedef projede Analytics etkinleştirilmelidir.

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 bir sonraki PUT komutunun yanıt başlıklarında güncellenmiş bir ETag sağlanır.

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

Remote Config koşullarını ve koşullu değerleri programatik olarak değiştirebilirsiniz. REST API ile, şablonu yayınlamadan önce koşulları değiştirmek için şablonu doğrudan düzenlemeniz gerekir.

{
  "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 öğe için isteğe bağlı bir açıklama da ekler. Örneğin kod yorumları, bunlar geliştirici kullanımı içindir ve uygulamada gösterilmez. Sürüm kontrolü amacıyla bir ETag de sağlanır.

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 sayıdan fazla anahtar (2000) 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 şu 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 yeni bir şablon ve ETag değeri almak üzere GET komutunu kullanmalı, şablonu güncellemeli ve ardından bu şablonu ve yeni ETag değerini kullanarak göndermelisiniz.
  • If-Match başlığı belirtilmeden bir PUT komutu (Remote Config şablonunu güncelleme isteği) gönderildi.
401 Yetkilendirme hatası oluştu (erişim jetonu sağlanmadı veya Firebase Remote Config REST API, Cloud Developer Console'da projenize eklenmedi)
403 Bir kimlik doğrulama hatası oluştu (yanlış erişim jetonu sağlandı)
500 Dahili bir hata oluştu. Bu hata meydana gelirse bir 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 mevcut olan Remote Config şablonunun hâlâ yürürlükte 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ıralaması, nasıl değerlendirileceğini etkilediği için bu önemlidir (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ı ve kaynaklarda yapılan güncellemelerin çakışmasını önlemek için varlık etiketi (ETag) kullanır. ETag'ler hakkında daha fazla bilgi edinmek için ETag - HTTP başlıklı makaleyi inceleyin.

Google, REST API için en son GET komutu tarafından sağlanan ETag'i önbelleğe almanızı ve PUT komutlarını gönderirken If-Match istek başlığındaki bu ETag değerini kullanmanızı önerir. PUT komutunuz HTTPS Durum Kodu 409 ile sonuçlanırsa sonraki PUT komutunuzla kullanılacak yeni bir ETag ve şablon edinmek için yeni bir GET komutu yayınlamanız gerekir.

Remote Config şablonunu aşağıdaki şekilde güncellenmeye zorlayarak ETag'i ve sağladığı korumayı atlayabilirsiniz: If-Match: * Ancak birden fazla istemci Remote Config şablonunu güncelliyorsa Remote Config şablonunuzdaki güncellemelerin kaybolmasına neden olabileceğinden bu yaklaşım önerilmez. 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ümlerini yönetmeyle ilgili yardım için Remote Config şablonları ve sürüm oluşturma başlıklı makaleyi inceleyin.