Remote Config şablonları, Firebase projeniz için oluşturduğunuz JSON biçimli parametre ve koşul kümeleridir. Uygulamanızın değer aldığı istemci şablonları ve sunucu istemcilerinin değer aldığı sunucu şablonları oluşturabilirsiniz.
Bu bölümde istemci şablonları ele alınmaktadır. Sunucuya özel şablonlar hakkında bilgi edinmek için Sunucu şablonları'nı tıklayın.Şablonu, Firebase konsolunu kullanarak değiştirir ve yönetirsiniz. Bu konsol, şablonun içeriğini Parametreler ve Koşullar sekmeleri.
İstemci şablonunuzu değiştirmek ve yönetmek için Remote Config REST API ve Admin SDK'yı ya da Firebase CLI'yi de kullanabilirsiniz.
Aşağıda bir sunucu şablonu dosyası örneği verilmiştir:
{
"parameters": {
"preamble_prompt": {
"defaultValue": {
"value": "You are a helpful assistant who knows everything there is to know about Firebase! "
},
"description": "Add this prompt to the user's prompt",
"valueType": "STRING"
},
"model_name": {
"defaultValue": {
"value": "gemini-pro-test"
},
"valueType": "STRING"
},
"generation_config": {
"defaultValue": {
"value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
},
"valueType": "JSON"
},
},
"version": {
"versionNumber": "19",
"isLegacy": true
}
}
Firebase konsoluyla aşağıdaki sürüm yönetimi görevlerini gerçekleştirebilirsiniz:
- Depolanan tüm şablon sürümlerini listele
- Belirli bir sürümü alma
- Belirli bir istemci sürümüne geri alma
- Remote Config şablonunu Değişiklik geçmişi sayfasından silme
Şablon türü başına toplam 300 ömür boyu depolanan sürüm sınırı vardır (300 istemci şablonu ve 300 sunucu şablonu). Bu sınıra, silinen şablonların depolanan sürüm numaraları da dahildir. Bir projenin kullanım süresi boyunca şablon türü başına 300'den fazla şablon sürümü yayınlarsanız en eski sürümler silinir. Böylece, ilgili türün en fazla 300 sürümü korunur.
Parametreleri her güncellediğinizde Remote Config, yeni sürümlü bir Remote Config şablonu oluşturur ve önceki şablonu, gerektiğinde geri alabileceğiniz veya geri dönebileceğiniz bir sürüm olarak depolar. Sürüm numaraları, Remote Config tarafından saklanan ilk değerden itibaren sırayla artırılır.
Tüm şablonlar, gösterildiği gibi ilgili sürümle ilgili meta verileri içeren bir version
alanı içerir.
Remote Config şablonu gerektiğinde Değişiklik geçmişi sayfasındaki Remote Config sayfasından silebilirsiniz.
Remote Config şablon sürümlerini yönetme
Bu bölümde, Remote Configşablonunuzun sürümlerini nasıl yöneteceğiniz açıklanmaktadır.
Remote Config şablonunun depolanan tüm sürümlerini listeleme
Remote Config şablonunun depolanan tüm sürümlerinin listesini alabilirsiniz. Bunun için:
Firebase konsol
Parametreler sekmesinde, sağ üstte gösterilen "saat" simgesini seçin. Bu işlem, sağdaki bir liste menüsünde depolanan tüm şablon sürümlerini listeleyen Değişiklik geçmişi sayfasını açar.
Depolanan her sürüm için görüntülenen ayrıntılar, değişikliklerin Console'dan mı, REST API'den mi, bir geri alma işleminden mi yoksa şablonun zorunlu olarak kaydedilmesinden kaynaklanan artımlı değişiklikler mi olduğu ile ilgili 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' değerini iletin.
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()); }
REST
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
Şablon listesi, güncellemenin zamanı, güncellemeyi yapan kullanıcı ve güncellemenin nasıl yapıldığı dahil olmak üzere depolanan tüm sürümlerin meta verilerini içerir. Sürüm öğesine örnek:
```json
{
"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
Remote Config şablonunun depolanan herhangi bir sürümünü alabilirsiniz. Saklanan bir şablon sürümünü almak için:
Firebase konsol
Değişiklik geçmişi sekmesindeki ayrıntılar bölmesinde varsayılan olarak mevcut etkin şablon gösterilir. Listede başka bir sürümün ayrıntılarını görüntülemek için sağ menüden ilgili sürümü seçin.
Seçilmemiş bir sürümün bağlam menüsünün üzerine gelip Seçili sürümle karşılaştır'ı seçerek, seçili sürüm ile depolanan diğer sürümler arasındaki farkı ayrıntılı olarak görüntüleyebilirsiniz.
Firebase CLI
firebase remoteconfig:get -v VERSION_NUMBER
İsteğe bağlı olarak, çıkışı -o, FILENAME
ile belirli bir dosyaya yazabilirsiniz.
Node.js
Şablonun en son sürümünü almak için getTemplate()
parametresini herhangi bir bağımsız değişken olmadan iletin veya belirli bir sürümü almak için getTemplateAtVersion()
parametresini 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());
REST
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 amacıyla kullanılamaz. ?version_number
parametresi olmadan benzer bir get isteği, mevcut etkin şablonu alır.
Remote Config şablonunun depolanan belirli bir sürümüne geri döndür
Şablonun kayıtlı bir sürümüne geri dönebilirsiniz. Bir şablonu geri çekmek için:
Firebase konsol
Geri alma işlemine uygun önceki şablon sürümleri için Değişiklik geçmişi sayfasının sağ üst kısmında ilgili sürüme geri dönme seçeneği düğmesi gösterilir. Bunu yalnızca ilgili sürüme geri dönmek ve bu değerleri tüm uygulamalar ile kullanıcılar için hemen kullanmak istediğinizden eminseniz tıklayıp onaylayın.
Firebase CLI
firebase remoteconfig:rollback -v VERSION_NUMBER
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()); } }
REST
Depolanan 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 isteği gönderin. Ö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, şu anda etkin olan depolanan şablonun içeriğini yeni sürüm meta verileriyle birlikte içerir.
Bu geri alma işleminin etkili bir şekilde yeni bir numaralı sürüm oluşturduğunu unutmayın. Örneğin, 10. sürümden 6. sürüme geri dönmek, 6. sürümün yeni bir kopyasını oluşturur. Bu kopya, orijinal sürümden yalnızca sürüm numarasının 11 olması bakımından farklıdır. Süresi dolmadığı varsayılarak orijinal 6. sürüm depolanmaya devam eder ve 11. sürüm etkin şablon olur.
Remote Config şablonu silme
Remote Config şablonlarını Firebase konsolundan silebilirsiniz. Remote Config şablonunu silmek için:
1. Remote Config Parametreler sayfasında Değişiklik geçmişi'ni tıklayın.Silmek istediğiniz şablona geçin,
Diğer'i tıklayın ve Sil'i seçin.Silme işlemini onaylamanız istendiğinde Sil'i tıklayın.
Remote Config şablonlarını indirin ve yayınlayın
Kaynak denetimi ve derleme sistemlerinize entegre etmek, yapılandırma güncellemelerini otomatikleştirmek ve parametreleri ile değerleri birden fazla projede senkronize tutmak için Remote Config şablonlarını indirip yayınlayın.
Şu anda etkin olan Remote Config şablonunu Firebase konsolundan indirebilirsiniz. Daha sonra, dışa aktarılan JSON dosyasını güncelleyip aynı projede yayınlayabilir veya yeni ya da mevcut bir projede yayınlayabilirsiniz.
Yazılım geliştirme yaşam döngünüzün farklı aşamalarını (ör. geliştirme, test, hazırlık ve üretim ortamları) temsil eden birden fazla projeniz olduğunu varsayalım. Bu durumda, tamamen test edilmiş bir şablonu, hazırlık projenizden indirip üretim projenizde yayınlayarak hazırlık ortamınızdan üretim ortamınıza tanıtabilirsiniz.
Bu yöntemi, yapılandırmaları bir projeden diğerine taşımak veya yeni bir projeyi mevcut bir projedeki parametre ve değerlerle doldurmak için de kullanabilirsiniz.
A/B Testing denemesinde özellikle varyant 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:
- Geçerli Remote Config Yapılandırma şablonunu indirin.
- Remote Config şablonunu doğrulayın.
- Remote Config şablonunu yayınlayın.
Mevcut Remote Config şablonunu indirme
Etkin Remote Config şablonunu JSON biçiminde indirmek için aşağıdakileri kullanın:
Firebase konsolu
- Remote Config Parametreler veya Koşullar sekmesinde Menü'yü açın ve Mevcut yapılandırma dosyasını indir'i seçin.
- İstendiğinde Yapılandırma dosyasını indir'i tıklayın, dosyayı kaydetmek istediğiniz yeri seçin ve Kaydet'i tıklayın.
Firebase CLI
firebase remoteconfig:get -o filename
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());
REST
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 headers
dosyasına yazar.
Remote Config şablonunu doğrulama
Şablon güncellemelerinizi yayınlamadan önce Firebase Admin SDK veya REST API'yi kullanarak doğrulayabilirsiniz. Şablonlar, Firebase CLI veya Firebase konsolundan yayınlamaya çalıştığınızda da doğrulanır.Şablon doğrulama süreci, parametre ve koşullar için yinelenen anahtarlar, geçersiz koşul adları veya var olmayan koşullar ya da yanlış biçimlendirilmiş ETag'ler gibi hataları kontrol eder. Örneğin, izin verilen sayıdan fazla anahtar (2.000) 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()); } }
REST
Yayın 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 kayıtlı headers
dosyasında HTTP/2 200 durum kodu ile -0
son ekini içeren güncellenmiş bir ETag görürsü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 (ve ETag) içerir.
Remote Config şablonunu yayınlayın
Bir şablonu indirdikten, JSON içeriğinde gerekli değişiklikleri yaptıktan ve doğruladıktan sonra şablonu bir projede yayınlayabilirsiniz.
Bir şablonun yayınlanması, mevcut yapılandırma şablonunun tamamını güncellenmiş dosyayla değiştirir ve şablon sürümünü bir 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.
Parametrelerde ve değerlerde yapılan değişiklikler, yayınlandıktan sonra uygulamalarınıza ve kullanıcılarınıza anında sunulur. Gerekirse önceki bir sürüme geri dönebilirsiniz.
Şablonunuzu yayınlamak için aşağıdaki komutları kullanın:
Firebase konsolu
- Remote Config Parametreler veya Koşullar sekmesinde Menü'yü açın ve Dosyadan yayınla'yı seçin.
- İstendiğinde Göz at'ı tıklayın, yayınlamak istediğiniz dosyaya gidin ve dosyayı seçin, ardından Seç'i tıklayın.Remote Config
- Dosya doğrulanır 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'yı tıklayabilirsiniz.
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
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.
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 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 yayınlanmadan önce hedef projede belirli koşullu değerlerin (ör. uygulama kimlikleri veya kitleler) bulunması gerektiğini unutmayın.
Örneğin, platform değerini
iOS
belirten bir koşul kullanan bir Remote Config parametreniz varsa platform değerleri tüm projeler 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'e dayalı koşullar içeriyorsa Analytics hedef projede etkinleştirilmelidir.
Remote Config varsayılan şablonu 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şebilecekleri için uygulama istemci varsayılan değerlerinizi ve Remote Config arka uç varsayılan parametre değerlerinizi de düzenli olarak senkronize etmeniz gerekir.
Bu bölümün sonundaki platforma özel bağlantılarda açıklandığı gibi, bu varsayılan değerleri uygulamanızda manuel olarak ayarlayabilir veya yalnızca tüm parametrelere ait anahtar/değer çiftlerini ve bunların etkin Remote Config şablonundaki varsayılan değerlerini içeren dosyaları indirerek bu işlemi kolaylaştırabilirsiniz. Ardından bu dosyayı projenize ekleyebilir ve uygulamanızı bu değerleri içe aktaracak şekilde yapılandırabilirsiniz.
Bu dosyaları Android uygulamaları için XML, iOS uygulamaları için mülk listesi (plist) ve web uygulamaları için JSON biçiminde indirebilirsiniz.
Uygulamanızın ve Remote Config arka uçunun senkronize kalmasını sağlamak için yeni bir uygulama sürümü yayınlanmadan önce Remote Config varsayılan ayarlarını düzenli olarak indirmenizi öneririz.
Şablon varsayılanlarını içeren bir dosya indirmek için:
REST
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 konsol
- Parametreler sekmesinde Menü'yü açın ve Varsayılan değerleri indir'i seçin.
- İstendiğinde, indirmek istediğiniz dosya biçimine karşılık gelen radyo düğmesini ve ardından Dosyayı indir'i tıklayın.
Remote Config varsayılan değerlerini uygulamanıza aktarma hakkında daha fazla bilgi için:
Android için uygulama içi varsayılan parametre değerlerini ayarlama
iOS için uygulama içi varsayılan parametre değerlerini ayarlama
Web için uygulama içi varsayılan parametre değerlerini ayarlama
Unity için uygulama içi varsayılan parametre değerlerini ayarlama
C++ için uygulama içi varsayılan parametre değerlerini ayarlama