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 özgü ş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 istemci şablonu dosyası örneği verilmiştir:
{
"conditions": [
{
"name": "ios",
"expression": "device.os == 'ios'"
}
],
"parameters": {
"welcome_message": {
"defaultValue": {
"value": "Welcome to this sample app"
},
"conditionalValues": {
"ios": {
"value": "Welcome to this sample iOS app"
}
}
},
"welcome_message_caps": {
"defaultValue": {
"value": "false"
}
},
"header_text": {
"defaultValue": {
"useInAppDefault": true
}
}
},
"version": {
"versionNumber": "28",
"updateTime": "2020-05-14T18:39:38.994Z",
"updateUser": {
"email": "user@google.com"
},
"updateOrigin": "CONSOLE",
"updateType": "INCREMENTAL_UPDATE"
}
}
Firebase konsoluyla aşağıdaki sürüm yönetimi görevlerini gerçekleştirebilirsiniz:
- Depolanan tüm şablon sürümlerini listeleme
- 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
Firebase CLI ve Remote Config arka uç API'lerini kullanarak şablonları listeleyebilir, alabilir ve geri alabilirsiniz.
Ş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 ve bu türde en fazla 300 sürüm saklanır.
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 şablonlarını, Remote Config konsolundaki Değişiklik geçmişi sayfasından gerektiği gibi 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.
Şablonları programatik olarak oluşturma, değiştirme ve kaydetme hakkında daha fazla bilgi için Remote Config'yi programatik olarak değiştirme başlıklı makaleyi inceleyin.
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.
Her bir depolanan sürüm için gösterilen ayrıntılar, değişikliklerin Console'dan mı, REST API'den mi, geri alma işleminden mi yoksa şablonun zorunlu olarak kaydedilmesinden mi kaynaklandığına dair 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ü alma
Remote Config şablonunun depolanan belirli 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 üzere bu parametreyi kullanamazsınız. ?version_number
parametresi olmadan benzer bir get isteği, mevcut etkin şablonu alır.
Remote Config şablonunun belirli bir depolanan sürümüne geri alma
Şablonun kayıtlı bir sürümüne geri dönebilirsiniz. Bir şablonu geri almak 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. Yalnızca ilgili sürüme geri dönmek ve bu değerleri tüm uygulamalar ve kullanıcılar için hemen kullanmak istediğinizden eminseniz bu seçeneği 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, yeni sürüm meta verileriyle birlikte şu anda etkin olan depolanan şablonun içeriğini 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ı indirip yayınlama
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, programatik olarak veya Daha sonra, dışa aktarılan JSON dosyasını güncelleyip aynı projede 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:
- Mevcut 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 konsol
- 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 işlemi, parametreler ve koşullar için yinelenen anahtarlar, geçersiz koşul adları veya var olmayan koşullar ya da yanlış biçimlendirilmiş ETags gibi hataları kontrol eder. Ö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.
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ınlama
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ğinden, JSON dosyasından sildiğiniz ve yayınladığınız bir 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 hemen sunulur. Gerekirse önceki bir sürüme geri dönebilirsiniz.
Şablonunuzu yayınlamak için aşağıdaki komutları kullanın:
Firebase konsol
- 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 doğrulama başarılı olursa yapılandırmanızı uygulamalarınızda ve kullanıcılarınızda 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 projede yayınlamaya çalışırken aşağıdaki sınırlamaları göz önünde bulundurmanız ö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 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 dayanan 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 şablonu varsayılanlarını indirme
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 etkin Remote Config şablonunda tüm parametrelerin anahtar/değer çiftlerini ve varsayılan değerlerini yalnızca içeren dosyaları indirerek bu süreci 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 dosyayı 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