Remote Config'i programatik olarak değiştirme

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

Bu kılavuzda açıklanan Remote Config REST API veya Admin SDKs kullanarak, Firebase konsolunda şablon yönetme işlemini atlayabilir ve Remote Config değişikliklerini doğrudan kendi süreçlerinize entegre edebilirsiniz. Örneğin, Remote Config arka uç API'leriyle şunları yapabilirsiniz:

  • Güncellemeleri Remote Config planlayın. API çağrılarını bir cron işiyle birlikte kullanarak Remote Config değerlerini düzenli olarak değiştirebilirsiniz.
  • Kendi tescilli sisteminizden Firebase Remote Config'ye 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ızdaki yeni bir özelliği tanıtmak için Remote Config kullanabilir ve yeterli sayıda kullanıcının yeni özellikle etkileşim kurduğunu tespit ettiğinizde bu tanıtımı otomatik olarak devre dışı bırakabilirsiniz.

    Remote Config arka ucunun özel araçlar ve sunucularla etkileşimini 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 aracılığıyla gerçekleştiren bazı kodları incelemek için şu ö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çmenizi sağlayan bir dizi sunucu kitaplığıdır. Remote Config üzerinde güncellemeler yapmanın yanı sıra Admin SDK, Firebase kimlik doğrulama jetonlarının oluşturulmasını ve doğrulanmasını, Realtime Database'dan okuma ve yazma işlemlerini vb. de sağlar. Admin SDKÖn koşullar ve kurulum hakkında daha fazla bilgi edinmek için Firebase Admin SDK'sını sunucunuza ekleme başlıklı makaleyi inceleyin.

Tipik bir Remote Config akışında, mevcut şablonu alabilir, bazı parametreleri veya parametre gruplarını ve koşulları 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 işlevini parametre olmadan başlattığınızda SDK, Google Uygulaması 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ümlendirildiğini ve her sürümün oluşturulma zamanından güncelleme ile değiştirilme zamanına kadar sınırlı bir kullanım ömrü olduğunu unutmayın: 90 gün ve toplamda 300 kayıtlı sürüm sınırı. Daha fazla bilgi için Şablonlar ve Sürüm Oluşturma bölümüne bakın.

Arka uç API'lerini kullanarak Remote Config şablonunun geçerli etkin sürümünü JSON biçiminde alabilirsiniz.

Özellikle bir A/B Testing denemesindeki varyantlar 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 mevsimlik bilgilerin gösterimini kontrol eden 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 ya da 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ğerlerini 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şiklikleri yaptıktan sonra şablonu açıkça yayınlamanız gerekir.

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ına bakın.Remote Config

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 sürecinde; parametreler ve koşullar için yinelenen anahtarlar, geçersiz koşul adları veya mevcut olmayan koşullar ya da yanlış biçimlendirilmiş etiketler gibi hatalar kontrol edilir. Örneğin, izin verilen anahtar sayısından (2.000) daha fazla anahtar içeren bir istek, Param count too large hata mesajını döndürür.

Remote Config şablonunu yayınlayın

Bir şablonu alıp istediğiniz güncellemelerle revize ettikten sonra yayınlayabilirsiniz. Bu bölümde açıklandığı şekilde bir şablon yayınladığınızda mevcut yapılandırma şablonunun tamamı güncellenmiş dosya ile değiştirilir ve yeni etkin şablona, yerine geçtiği şablondan bir fazla olan bir sürüm numarası atanır.

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

Remote Config kişiselleştirmeler 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 projeler arasında içe aktarılamaz.

    Örneğin, projenizde kişiselleştirmeler etkinse ve bir şablonu indirip düzenlerseniz 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 yayınlamadan önce hedef projede belirli koşullu değerlerin (ör. uygulama kimlikleri veya kitleler) bulunması gerektiğini unutmayın.

    Örneğin, Remote Config parametreniz varsa ve bu parametre, iOS platform değerini belirten bir koşul kullanıyorsa şablon başka bir projede yayınlanabilir. Bunun nedeni, platform değerlerinin tüm projeler için aynı olmasıdır. 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 koşullarına bağlıysa 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'yi kullanarak Remote Config'i değiştirme

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

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

Firebase projeleri, uygulamanızın sunucusundan veya güvenilir ortamdan Firebase sunucu API'lerini çağırmak için kullanabileceğiniz Google hizmet hesaplarını destekler. Kodu yerel olarak geliştiriyorsanız veya uygulamanızı şirket içinde dağıtıyorsanız sunucu isteklerini yetkilendirmek için bu hizmet hesabı üzerinden alınan kimlik bilgilerini kullanabilirsiniz.

Bir hizmet hesabının kimliğini doğrulamak ve 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, 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ı üzerinden yetkilendirirken uygulamanıza kimlik bilgilerini sağlamak için iki seçeneğiniz vardır. 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ç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 örtülü olarak belirleyebilir. Bu sayede, Google dışı ortamlarda test yaparken veya çalıştırırken hizmet hesabı kimlik bilgilerini kullanabilirsiniz.

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

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ği bir JSON web jetonu (JWT) ile doğrular. Daha fazla bilgi için JSON web jetonları konusuna bakın.

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 için erişimi yetkilendirmek üzere kapsamı https://www.googleapis.com/auth/firebase.remoteconfig isteyin.

Remote Config şablonunu değiştirme

Remote Config şablonlarıyla çalışırken bunların sürümlendirildiğini ve her sürümün oluşturulma zamanından güncelleme ile değiştirilme zamanına kadar sınırlı bir kullanım ömrü olduğunu unutmayın: 90 gün ve toplamda 300 kayıtlı sürüm sınırı. Daha fazla bilgi için Şablonlar ve Sürüm Oluşturma bölümüne bakın.

Mevcut Remote Config şablonunu alma

Arka uç API'lerini kullanarak Remote Config şablonunun geçerli etkin sürümünü JSON biçiminde alabilirsiniz.

Özellikle bir A/B Testing denemesindeki varyantlar 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 çıkarır.

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ı, sonraki istekte kullanacağınız bir ETag içeren ayrı bir başlıkla birlikte aşağıdaki JSON'u döndürür.

Remote Config şablonunu doğrulama

İsteğe bağlı olarak, güncellemelerinizi yayınlamadan önce doğrulayabilirsiniz. Yayınlama isteğinize ?validate_only=true URL parametresini ekleyerek şablon güncellemelerini doğrulayın. Yanıtın durum kodu 200 ve -0 sonekiyle güncellenen etag, güncellemenizin başarıyla doğrulandığını gösterir. 200 dışında herhangi bir yanıt, JSON verilerinde yayınlamadan önce düzeltmeniz gereken hatalar olduğunu gösterir.

Remote Config şablonunu güncelleme

Bir şablonu alıp JSON içeriğini istediğiniz güncellemelerle revize ettikten sonra yayınlayabilirsiniz. Bu bölümde açıklandığı şekilde bir şablon yayınladığınızda mevcut yapılandırma şablonunun tamamı güncellenmiş dosya ile değiştirilir ve yeni etkin şablona, yerine geçtiği şablondan bir fazla olan bir sürüm numarası atanır.

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

Remote Config kişiselleştirmeler 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 projeler arasında içe aktarılamaz.

    Örneğin, projenizde kişiselleştirmeler etkinse ve bir şablonu indirip düzenlerseniz 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 yayınlamadan önce hedef projede belirli koşullu değerlerin (ör. uygulama kimlikleri veya kitleler) bulunması gerektiğini unutmayın.

    Örneğin, Remote Config parametreniz varsa ve bu parametre, iOS platform değerini belirten bir koşul kullanıyorsa şablon başka bir projede yayınlanabilir. Bunun nedeni, platform değerlerinin tüm projeler için aynı olmasıdır. 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 koşullarına bağlıysa 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 komutunda, içeriği dosya adından önce "@" karakterini kullanarak 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 komutla değiştirilir ve bir sonraki PUT komutunun yanıt üstbilgilerinde güncellenmiş bir ETag sağlanır.

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

Remote Config koşullarını ve koşullu değerlerini programatik olarak değiştirebilirsiniz. REST API ile, şablonu yayınlamadan önce koşulları değiştirmek için 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 koşul grubu tanımlar, 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 ekler. Kod yorumları gibi bunlar da geliştiricilerin kullanımına yöneliktir ve uygulamada gösterilmez. Sürüm kontrolü amacıyla bir ETag da sağlanır.

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ına bakın.Remote Config

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) daha 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 şu iki durumda da oluşabilir:
  • Değerler ve koşullar grubu, son ETag değerini almanızdan bu yana güncellendiği için sürüm uyuşmazlığı hatası oluştu. Bu sorunu çözmek için GET komutunu kullanarak yeni bir şablon ve ETag değeri almanız, şablonu güncellemeniz, ardından bu şablonu ve yeni ETag değerini kullanarak göndermeniz gerekir.
  • If-Match başlığı belirtilmeden PUT komutu (Remote Config şablonu güncelleme isteği) verildi.
401 Yetkilendirme hatası oluştu (erişim jetonu sağlanmadı veya Cloud Developer Console'da projenize Firebase Remote Config REST API'si eklenmedi)
403 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 (proje için parametreler, değerler ve koşullar) güncellendiği ve artık bu projeyi kullanan uygulamalarda kullanılabildiği anlamına gelir. Diğer durum kodları, daha önce var olan Remote Config şablonun hâlâ geçerli olduğunu gösterir.

Şablonunuzda güncellemeler 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ı, değerlendirme şeklini etkilediğinden (true olarak değerlendirilen ilk koşul geçerli olur) bu durum çok önemlidir.

ETag kullanımı ve zorunlu güncellemeler

Remote Config REST API, yarışma koşullarını ve kaynaklarda çakışan güncellemeleri önlemek için bir 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ı verirken If-Match istek başlığında bu ETag değerini kullanmanızı önerir. PUT komutunuz HTTPS durum kodu 409 ile sonuçlanıyorsa bir sonraki PUT komutunuzda kullanmak üzere yeni bir ETag ve şablon edinmek için yeni bir GET komutu vermeniz gerekir.

Aşağıdaki şekilde Remote Config şablonunun güncellenmesini zorlayarak ETag'i ve sağladığı korumayı atlayabilirsiniz: If-Match: * Ancak bu yaklaşım, birden fazla istemci Remote Config şablonunu güncelliyorsa Remote Config şablonunuzdaki güncellemelerin kaybolmasına neden olabileceğinden önerilmez. Bu tür bir çakışma, API'yi kullanan birden fazla istemcide veya API istemcileri ile Firebase konsolu kullanıcılarının çakışan güncellemelerinde meydana gelebilir.

Remote Config şablon sürümlerini yönetme hakkında bilgi edinmek için Remote Config şablonları ve sürüm oluşturma başlıklı makaleyi inceleyin.