Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Remote Config'i programlı olarak değiştirin

Bu belge, JSON biçimli parametreler ve Remote Config şablonu olarak bilinen koşullar kümesini programatik olarak nasıl okuyup değiştirebileceğinizi açıklamaktadır. Bu, istemci uygulamasının istemci kitaplığını kullanarak alabileceği arka uçta şablon değişiklikleri yapmanızı sağlar.

Remote Config REST API'yi veya bu kılavuzda açıklanan Admin SDK'ları kullanarak, Remote Config değişikliklerini kendi süreçlerinize doğrudan entegre etmek için Firebase konsolundaki şablonu yönetmeyi atlayabilirsiniz. Örneğin, Remote Config arka uç API'leri 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 tescilli sisteminizden Firebase Remote Config'e verimli bir şekilde geçiş yapmak için yapılandırma değerlerini toplu içe aktarın .
  • Cloud Functions for Firebase ile Remote Config'i kullanarak uygulamanızda sunucu tarafında gerçekleşen olaylara göre değerleri değiştirin. Örneğin, uygulamanızda yeni bir özelliği tanıtmak için Remote Config'i kullanabilir ve ardından yeterli sayıda kişinin yeni özellikle etkileşime girdiğini tespit ettiğinizde bu tanıtımı otomatik olarak kapatabilirsiniz.

Bu kılavuzun aşağıdaki bölümleri, Remote Config arka uç API'leri ile yapabileceğiniz işlemleri açıklamaktadı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'yı kullanarak Remote Config'i değiştirin

Admin SDK, ayrıcalıklı ortamlardan Firebase ile etkileşim kurmanıza olanak tanıyan bir dizi sunucu kitaplığıdır. Admin SDK, Remote Config için güncellemeler gerçekleştirmenin yanı sıra, Firebase kimlik doğrulama jetonlarının oluşturulmasını ve doğrulanmasını, Realtime Database'den okuma ve yazmayı vb. Admin SDK önkoşulları ve kurulumu hakkında daha fazla bilgi edinmek için Firebase Admin SDK'yi sunucunuza ekleme bölümüne bakın.

Tipik bir Remote Config akışında, geçerli ş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şlatın ve API isteklerini yetkilendirin

Yönetici SDK'sını parametre olmadan başlattığınızda, SDK, Google Uygulama Varsayılan Kimlik Bilgilerini kullanır ve FIREBASE_CONFIG ortam değişkeninden seçenekleri okur. FIREBASE_CONFIG değişkeninin içeriği bir { ile başlıyorsa, bir JSON nesnesi olarak ayrıştırılacaktır. Aksi takdirde, SDK, dizenin seçenekleri içeren bir JSON dosyasının adı olduğunu varsayar.

Örneğin:

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

Mevcut Remote Config Şablonunu alın

Remote Config şablonlarıyla çalışırken, sürümlerinin belirlendiğini ve her sürümün, oluşturuldukları zamandan bir güncellemeyle değiştirdiğiniz zamana kadar sınırlı bir ömre sahip olduğunu unutmayın: 90 gün ve toplam 300 depolanmış sürüm sınırı. Daha fazla bilgi için Şablonlar ve Sürüm Oluşturma konusuna bakın.

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

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

Remote Config parametrelerini değiştirin

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

function addParameterToGroup(template) {
  template.parameterGroups['new_menu'].parameters['spring_season'] = {
    defaultValue: {
      useInAppDefault: true
    },
    description: '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ınlamalısınız.

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

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

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

Her durumda, değişiklikleri yaptıktan sonra şablonu açıkça yayınlamalısınız.

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 işleçleri 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 şablonunu doğrulayın

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

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

Bu 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 anahtar sayısından (2000) fazlasını içeren bir istek, Param count too large hata mesajını döndürür.

Remote Config şablonunu yayınlayın

Bir şablonu aldıktan ve istediğiniz güncellemeler ile revize ettikten sonra, onu yayınlayabilirsiniz. Bu bölümde açıklandığı gibi bir şablon yayınlamak, mevcut yapılandırma şablonunun tamamını güncellenmiş dosyayla değiştirir ve yeni etkin şablona, ​​değiştirdiği şablondan bir numara büyük bir sürüm numarası atanır.

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

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

REST API kullanarak Remote Config'i değiştirin

Bu bölümde, https://firebaseremoteconfig.googleapis.com Remote Config REST API'nin temel yetenekleri 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 bir erişim jetonu alın

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

Bir hizmet hesabının kimliğini doğrulamak ve onu Firebase hizmetlerine erişim yetkisi vermek için JSON biçiminde bir özel anahtar dosyası oluşturmanız gerekir.

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

  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ı 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ının yolunu açık bir şekilde iletebilirsiniz. İlk seçenek daha güvenlidir ve şiddetle tavsiye edilir.

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 yeniden ayarlayın.

Linux veya macOS

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

pencereler

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ük olarak belirleyebilir ve Google dışı ortamlarda test ederken veya çalışırken hizmet hesabı kimlik bilgilerini kullanmanıza olanak tanır.

Kısa ömürlü bir OAuth 2.0 erişim jetonu almak için tercih ettiğiniz dil için Google API İstemci Kitaplığı ile birlikte Firebase kimlik bilgilerinizi 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ğin kimliğini bir JSON web jetonu veya JWT ile doğrular. Daha fazla bilgi için JSON web belirteçlerine 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

private static String getAccessToken() throws IOException {
  GoogleCredential googleCredential = GoogleCredential
      .fromStream(new FileInputStream("service-account.json"))
      .createScoped(Arrays.asList(SCOPES));
  googleCredential.refreshToken();
  return googleCredential.getAccessToken();
}

Erişim jetonunuzun süresi dolduktan sonra, güncellenmiş erişim jetonunu 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ştirin

Remote Config şablonlarıyla çalışırken, sürümlerinin belirlendiğini ve her sürümün, oluşturuldukları andan bir güncellemeyle değiştirdiğiniz zamana kadar sınırlı bir ömre sahip olduğunu unutmayın: 90 gün ve toplam 300 depolanmış sürüm sınırı. Daha fazla bilgi için Şablonlar ve Sürüm Oluşturma konusuna bakın.

Mevcut Remote Config Şablonunu alın

Remote Config şablonunun geçerli etkin sürümünü JSON biçiminde almak için arka uç API'lerini kullanabilirsiniz. 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 ve üstbilgileri (Etag dahil) 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 istek için kullandığınız bir ETag içeren ayrı bir başlık ile birlikte aşağıdaki JSON'u döndürür.

Remote Config şablonunu doğrulayın

İsteğe bağlı olarak, güncellemelerinizi yayınlamadan önce doğrulayabilirsiniz. Şablon güncellemelerini, yayın isteğinize ?validate_only=true Validate_only ?validate_only=true URL parametresini ekleyerek ?validate_only=true . Yanıtta, bir durum kodu 200 ve -0 sonekiyle güncellenmiş bir etag, güncellemenizin başarıyla doğrulandığı anlamına gelir. 200 olmayan herhangi bir yanıt, JSON verilerinin yayınlamadan önce düzeltmeniz gereken hatalar içerdiğini gösterir.

Remote Config şablonunu güncelleyin

Bir şablonu aldıktan ve JSON içeriğini istediğiniz güncellemelerle revize ettikten sonra, bunu yayınlayabilirsiniz. Bu bölümde açıklandığı gibi bir şablon yayınlamak, tüm mevcut yapılandırma şablonunu güncellenmiş dosyayla değiştirir ve yeni etkin şablona, ​​değiştirdiğ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. Bir güncellemedeki hata riskini azaltmak için, yayınlamadan önce doğrulama yapabilirsiniz.

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, içeriği "@" karakterini ve ardından dosya adını 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 başlıklarında güncellenmiş bir ETag sağlanır.

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

Remote Config koşullarını ve koşullu değerleri programlı 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 tanımlar ve 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 geliştiricinin kullanımı içindir ve uygulamada görüntülenmez. Sürüm kontrolü amacıyla bir ETag de sağlanmıştı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 işleçleri 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 .

HTTP Hata kodları

Durum kodu Anlam
200 Başarıyla güncellendi
400 Bir doğrulama hatası oluştu. Örneğin, izin verilen sayıda anahtar (2000) içeren bir istek, Param count too large hata mesajıyla birlikte 400 (Kötü İstek) döndürür. Ayrıca, bu HTTPS Durum Kodu şu iki durumda ortaya çıkabilir:
  • Bir ETag değerini en son aldığınızdan bu yana değerler ve koşullar kümesi güncellendiği için bir sürüm uyuşmazlığı hatası oluştu. Bunu çözmek için, yeni bir şablon ve ETag değeri almak için bir GET komutu kullanmanız, şablonu güncellemeniz ve ardından bu şablonu ve yeni ETag değerini kullanarak göndermeniz gerekir.
  • Bir If-Match başlığı belirtilmeden bir PUT komutu (Uzak Yapılandırmayı Güncelle şablonu isteği) yapıldı.
401 Bir yetkilendirme hatası oluştu (erişim jetonu sağlanmadı veya Firebase Remote Config REST API, Cloud Developer Console'daki projenize eklenmedi)
403 Bir kimlik doğrulama hatası oluştu (yanlış erişim belirteci sağlandı)
500 Dahili bir hata oluştu. Bu hata oluşursa bir 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 uygulamalar tarafından kullanılabilir olduğu anlamına gelir. Diğer durum kodları, daha önce var olan Remote Config şablonunun hala yürürlükte olduğunu gösterir.

Şablonunuza güncellemeler gönderdikten sonra, değişikliklerinizin beklendiği gibi göründüğünü doğrulamak için Firebase konsoluna gidin. Bu kritiktir çünkü koşulların sıralaması nasıl değerlendirildiklerini etkiler ( true değerlendiren ilk koşul yürürlüğe girer).

ETag kullanımı ve zorunlu güncellemeler

Remote Config REST API, yarış 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'ye bakın.

REST API için Google, en son GET komutu tarafından sağlanan ETag'ı önbelleğe almanızı ve PUT komutlarını verirken If-Match istek başlığındaki bu ETag değerini kullanmanızı önerir. PUT komutunuz bir HTTPS Durum Kodu 409 ile sonuçlanırsa, bir sonraki PUT komutunuzda kullanmak üzere yeni bir ETag ve şablon almak için yeni bir GET komutu vermelisiniz.

Remote Config şablonunu aşağıdaki şekilde güncellenmeye zorlayarak ETag'ı ve sağladığı korumayı atlatabilirsiniz: If-Match: * Ancak bu yaklaşım, Remote Config'inizdeki güncellemelerin kaybına neden olma riski nedeniyle önerilmez Birden fazla istemci Remote Config şablonunu güncelliyorsa şablon. Bu tür bir çakışma, API'yi kullanan birden çok istemcide veya API istemcileri ve Firebase Konsolu kullanıcılarından gelen çakışan güncellemelerde ortaya çıkabilir.

Remote Config şablonu sürümlerini yönetme konusunda rehberlik için bkz. Remote Config şablonları ve sürüm oluşturma .