Bu dokümanda, programlı bir şekilde nasıl okuyabileceğiniz olarak bilinen JSON biçimli parametre ve koşul kümesini değiştirebilirsiniz. Remote Config şablonu. Bu da şablon değişiklikleri yapabilirsiniz. istemci uygulamasının istemci kitaplığını kullanarak alabileceği arka uç.
Remote Config REST API veya Bu kılavuzda açıklanan Admin SDK'ları atlayabilirsiniz. doğrudan entegrasyona olanak tanıyan Firebase konsolunda bu şablonun Remote Config değişikliği kendi süreçlerinize uygulanır. Örneğin, Remote Config arka uç API'sini kullanarak:
- Remote Config güncelleme planlanıyor. API çağrılarını bir cron işiyle birlikte kullanarak Remote Config değerlerini düzenli olarak değiştirebilirsiniz.
- Kendi özel sisteminizden Firebase Remote Config sistemine verimli bir şekilde geçiş yapmak için yapılandırma değerlerini toplu 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 kişinin yeni özellikle etkileşimde bulunduğunu tespit ettiğinizde tanıtımı otomatik olarak kapatabilirsiniz.
Bu kılavuzun aşağıdaki bölümlerinde, Remote Config arka uç API'leri. Bu işlemleri gerçekleştiren bazı kodları incelemek için aşağıdaki örnek uygulamalardan birine göz atın:
- Firebase Remote Config REST API Java Hızlı Başlangıç Kılavuzu
- Firebase Remote Config REST API Node.js Hızlı Başlangıç Kılavuzu
- Firebase Remote Config REST API Python hızlı başlangıç kılavuzu
Firebase Admin SDK'yı kullanarak Remote Config'i değiştirme
Admin SDK, etkileşimde bulunmanıza olanak tanıyan bir dizi sunucu kitaplığıdır. Firebase'i özelleştirerek. Proje yöneticisi olarak Remote Config için Admin SDK, verilerin oluşturulmasına ve doğrulanmasına olanak tanır Firebase kimlik doğrulama jetonları, Realtime Database kaynaklı okuma ve yazma işlemleri vb. Admin SDK ön koşulları ve kurulumu hakkında daha fazla bilgi edinmek için Firebase Admin SDK'yı sunucunuza ekleyin.
Tipik bir Remote Config akışında geçerli şablonu alabilir, bazı parametrelerin veya parametre gruplarının ve koşullarının bazılarını geri getirdikçe, şablonu oluşturup yayınlayabilirsiniz. Bu API çağrılarını yapmadan önce SDK'dan gelen isteklerdir.
SDK'yı başlatma ve API isteklerini yetkilendirme
Admin SDK öğesini parametre olmadan başlattığınızda SDK
Google Uygulaması Varsayılan Kimlik Bilgileri
ve FIREBASE_CONFIG
ortam değişkenindeki seçenekleri okur.
FIREBASE_CONFIG
değişkeninin içeriği bir {
ile başlıyorsa
JSON nesnesi olarak ayrıştırılır. Aksi takdirde SDK, dizenin
seçenekleri içeren JSON dosyasının adı.
Ö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);
Geçerli Remote Config şablonunu alın
Remote Config şablonlarıyla çalışırken şunları unutmayın: ve her sürümün, sunulduğu andan itibaren sınırlı bir kullanım ömrüne sahip olduğunu oluşturma süresi, güncellemeyle değiştirdiğiniz zamana kadar: 90 gün (toplam sınırla birlikte) depolanan sürüm. Şablonlar ve Sürüm Oluşturma başlıklı makaleyi inceleyin konulu videomuzu izleyin.
Etiketin mevcut etkin sürümünü almak için arka uç API'lerini kullanabilirsiniz. JSON biçiminde Remote Config şablonu.
Belirli bir A/B Testing deneme, dışa aktarılan şablonlara dahil edilmedi.
Ş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 programlı bir şekilde değiştirip ekleyebilirsiniz. parametre gruplarıyla tutarlıdır. Örneğin, "new_menu" adlı mevcut bir parametre grubuna mevsimsel 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 parametreler oluşturmanızı sağlar veya varsayılan değerleri, koşullu değerleri ve açıklamaları değiştirebilir. Her durumda, şablonu yapmanızı sağlayan sorular.
Remote Config koşullarını değiştirme
Remote Config koşullarını programatik olarak değiştirip ekleyebilirsiniz. koşullu değerlerdir. Ö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, şablonu yapmanızı sağlayan sorular.
Remote Config arka uç API'leri çeşitli koşullar ve karşılaştırmalar sağlar Uygulamanızın davranışını ve görünümünü değiştirmek için kullanabileceğiniz operatörler. Alıcı: koşullar ve bu koşullar için desteklenen operatörler hakkında daha fazla bilgi edinmek, koşullu ifade referansı bölümüne bakın.
Remote Config şablonunu doğrulayın
İsteğe bağlı olarak, güncellemelerinizi yayınlamadan önce aşağıda gösterildiği gibi 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üreci
parametreler ve koşullar için yinelenen anahtarlar,
geçersiz koşul adları, var olmayan koşullar veya yanlış biçimlendirilmiş etag'ler.
Örneğin, izin verilen sayıdan daha fazla
tuşlar (2000) Param count too large
hata mesajını döndürür.
Remote Config şablonunu yayınlayın
Bir şablonu alıp istediğiniz şekilde revize ederek sonra yayınlayabilirsiniz. Bir şablonu bu makalede açıklandığı şekilde yayınlama bölümü, mevcut yapılandırma şablonunun tamamını güncellenmiş dosyayla değiştirir ve yeni etkin şablona yeni bir şablon bulmanız gerekir.
Gerekirse önceki sürüme dönmek için REST API'yi kullanabilirsiniz. Güncelleme sırasındaki hata riskini azaltmak için şunları yapabilirsiniz: yayınlanmadan önce doğrulayın.
Remote Config kişiselleştirme ve koşul dahil edildi indirilmiş şablonlardan yararlanabilirsiniz. Bu nedenle, kullanabileceğiniz bazı kısıtlamalar vardır:
Kişiselleştirmeler, bir projeden projeye aktarılamaz.
Örneğin, projenizde kişiselleştirmeler etkinse ve bir şablon indirip düzenledikten sonra, oluşturduğunuz ama projeyi silmediğiniz sürece farklı bir projede yayınlayamazsınız bazı kişiselleştirmeler var.
Koşullar projeden projeye aktarılabilir ancak belirli koşullu değerler (ör. uygulama kimlikleri veya kitleler) önce hedef projeye odaklanacağız.
Örneğin, koşul kullanan bir Remote Config parametreniz varsa
iOS
platform değerini belirten bir şablon varsa şablon, çünkü platform değerleri tüm projeler için aynıdır. Ancak belirli bir uygulama kimliğine veya kullanıcıya dayalı bir koşul içeriyorsa hedef projede yoksa doğrulama başarısız olur.Yayınlamayı planladığınız şablon, Google Analytics, Analytics hedefte etkinleştirilmelidir belirler.
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, projenizin temel yetenekleri
Remote Config https://firebaseremoteconfig.googleapis.com
itibarıyla REST API.
Tüm ayrıntılar için API referansına bakın.
API isteklerinin kimliğini doğrulamak ve yetkilendirmek için erişim jetonu alma
Firebase projeleri Google'ı destekler hizmet hesapları kullanıyorsanız Firebase'i çağırmak için kullanabileceğiniz uygulama sunucunuzdaki veya güvenilir ortamınızdaki sunucu API'leri Proje yöneticisi olarak yerel olarak kodlayın veya uygulamanızı şirket içine dağıtın edinilen kimlik bilgilerini kullanabilir bu hizmet hesabını kullanarak sunucu isteklerini yetkilendirebilir.
Bir hizmet hesabının kimliğini doğrulama ve hesabı yetkilendirme Firebase hizmetlerine erişmek için JSON biçiminde bir özel anahtar dosyası oluşturmanız gerekir biçimindedir.
Hizmet hesabınız için özel anahtar dosyası oluşturmak üzere:
Firebase konsolunda şu uygulamayı açın: Ayarlar > Hizmet Hesapları.
Yeni Özel Anahtar Oluştur'u tıklayın ve ardından Anahtar Oluştur'u tıklayarak onaylayın.
Anahtarı içeren JSON dosyasını güvenli bir şekilde depolayın.
Bir hizmet hesabı aracılığıyla yetkilendirme yaparken, uygulamanıza kimlik bilgisi ekleyin. İsterseniz GOOGLE_APPLICATION_CREDENTIALS ortam değişkeni kullanabilirsiniz. hizmet hesabı anahtarının yolunu kodda açıkça iletin. İlk seçenek daha güvenlidir ve kesinlikle önerilir.
Ortam değişkenini ayarlamak için:
GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlayın hizmet hesabı anahtarınızı içeren JSON dosyasının dosya yoluna. Bu değişken yalnızca mevcut kabuk oturumunuz için geçerlidir. Bu nedenle, yeni bir oturum açmak istiyorsanız değişkeni tekrar ayarlayın.
Linux veya macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
Powerpoint 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ı yoldan belirleyerek hesap kimlik bilgilerini ele alacağız.
Firebase kimlik bilgilerinizi Google Kimlik Doğrulama Kitaplığı kısa ömürlü bir OAuth 2.0 erişim jetonu almak için tercih ettiğiniz dile dokunun:
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. Daha fazla bilgi için bkz. JSON web jetonları.
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 jeton yenileme yöntemi çağrılır. otomatik olarak alır.
Remote Config erişimini yetkilendirmek için kapsamı isteyin
https://www.googleapis.com/auth/firebase.remoteconfig
.
Remote Config şablonunu değiştirme
Remote Config şablonlarıyla çalışırken şunları unutmayın: ve her sürümün, sunulduğu andan itibaren sınırlı bir kullanım ömrüne sahip olduğunu oluşturma süresi, güncellemeyle değiştirdiğiniz zamana kadar: 90 gün (toplam sınırla birlikte) depolanan sürüm. Şablonlar ve Sürüm Oluşturma başlıklı makaleyi inceleyin konulu videomuzu izleyin.
Geçerli Remote Config şablonunu alın
Etiketin mevcut etkin sürümünü almak için arka uç API'lerini kullanabilirsiniz. JSON biçiminde Remote Config şablonu.
Belirli bir A/B Testing deneme, dışa aktarılan şablonlara dahil edilmedi.
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 çıkarır ve (Etag dahil) ayrı bir dosyaya yükleyebilirsiniz.
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 öğesini, Etiket Yöneticisi'ni içeren bir ETag'i talep edebilirsiniz.
Remote Config şablonunu doğrulayın
İsterseniz, güncellemelerinizi yayınlamadan önce doğrulayabilirsiniz.
Şablon güncellemelerini ekleyerek doğrulayın
ekleme isteğiniz için ?validate_only=true
URL parametresini kullanın.
Yanıtta, durum kodu 200 ve -0
son ekiyle güncellenmiş bir etag
, güncellemenizin başarıyla doğrulandığı anlamına gelir. 200 olmayan tüm yanıtlar
JSON verilerinin, hata ayıklamadan önce düzeltmeniz gereken hatalar içerdiğini gösterir
yayıncılık.
Remote Config şablonunu güncelleyin
Bir şablon alma ve JSON içeriğini istediğiniz şekilde düzeltme sonra yayınlayabilirsiniz. Bir şablonu bu makalede açıklandığı şekilde yayınlama bölümü, mevcut yapılandırma şablonunun tamamını güncellenmiş dosyayla değiştirir ve yeni etkin şablona yeni bir şablon bulmanız gerekir.
Gerekirse önceki sürüme dönmek için REST API'yi kullanabilirsiniz. Güncelleme sırasındaki hata riskini azaltmak için şunları yapabilirsiniz: yayınlanmadan önce doğrulayın.
Remote Config kişiselleştirme ve koşul dahil edildi indirilmiş şablonlardan yararlanabilirsiniz. Bu nedenle, kullanabileceğiniz bazı kısıtlamalar vardır:
Kişiselleştirmeler, bir projeden projeye aktarılamaz.
Örneğin, projenizde kişiselleştirmeler etkinse ve bir şablon indirip düzenledikten sonra, oluşturduğunuz ama projeyi silmediğiniz sürece farklı bir projede yayınlayamazsınız bazı kişiselleştirmeler var.
Koşullar projeden projeye aktarılabilir ancak belirli koşullu değerler (ör. uygulama kimlikleri veya kitleler) önce hedef projeye odaklanacağız.
Örneğin, koşul kullanan bir Remote Config parametreniz varsa
iOS
platform değerini belirten bir şablon varsa şablon, çünkü platform değerleri tüm projeler için aynıdır. Ancak belirli bir uygulama kimliğine veya kullanıcıya dayalı bir koşul içeriyorsa hedef projede yoksa doğrulama başarısız olur.Yayınlamayı planladığınız şablon, Google Analytics, Analytics hedefte etkinleştirilmelidir belirler.
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şaretini kullanarak içeriği belirtebilirsiniz. karakter,
ve ardından dosya adı yazın.
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 güncellenmiş bir ETag,
sonraki PUT
komutunun yanıt başlıkları
Remote Config koşullarını değiştirme
Remote Config koşullarını ve koşullarını programatik olarak değiştirebilirsiniz. değerler. REST API ile değiştirmek için doğrudan şablonu düzenlemeniz gerekir ve koşulları dikkate almalıdır.
{ "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 ilk olarak bir dizi koşul tanımlar, ardından varsayılan değerleri ve koşula dayalı parametreyi (koşullu değerler) tanımlar her parametrenin değerini öğrenebilirsiniz. Ayrıca her reklam öğesi için isteğe bağlı element; Bunlar geliştirici kullanımı içindir ve burada gösterilmez inceleyebilirsiniz. ETag, sürüm kontrolü amacıyla da sağlandığından emin olun.
Remote Config arka uç API'leri çeşitli koşullar ve karşılaştırmalar sağlar Uygulamanızın davranışını ve görünümünü değiştirmek için kullanabileceğiniz operatörler. Alıcı: koşullar ve bu koşullar için desteklenen operatörler hakkında daha fazla bilgi edinmek, 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 anahtar sayısı (2000) için 400 (Hatalı İstek)
Param count too large hata mesajı.
Ayrıca, bu HTTPS Durum Kodu şu iki durumda da ortaya çıkabilir:
|
401 | Bir yetkilendirme hatası oluştu (erişim jetonu sağlanmadı veya Firebase Remote Config REST API şu konumdaki projenize eklenmedi: Cloud Developer Console) |
403 | Bir 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 (parametreler, değerler ve koşulları) güncellenmiştir ve artık uygulamalar tarafından kullanılabilir. iletişim kurabiliyorsunuz. Diğer durum kodları, Remote Config mevcut şablon yürürlükte kalmaya devam ediyor.
Şablonunuzda güncellemeleri gönderdikten sonra Firebase konsoluna giderek
değişikliklerinizin beklendiği gibi göründüğünü doğrulayın. Bu son derece önemlidir çünkü
koşulların sıralaması, bunların nasıl değerlendirileceğini etkiler (koşullar arasında,
true
'ın geçerli olacağını değerlendirir.
ETag kullanımı ve zorunlu güncellemeler
Remote Config REST API, yarış koşullarını önlemek için bir varlık etiketi (ETag) kullanır kaynaklarda yapılan çakışan güncellemeler. ETag'ler hakkında daha fazla bilgi için ETag - HTTP.
Google, REST API için
en son GET
komutu tarafından sağlanan ETag'i ayarlayın ve bu ETag değerini kullanın
PUT
komutlarını yayınlarken If-Match
istek başlığında. PUT
komutu HTTPS Durum Kodu 409 ile sonuçlanırsa yeni bir GET
komutuna ekleyerek sonraki PUT
komutunuzla kullanacağınız yeni bir ETag ve şablon edinebilirsiniz.
ETag'i ve sağladığı korumayı atlatmak için ETag'in
Remote Config şablonunun şu şekilde güncellenmesini zorlayın: If-Match: *
Ancak bu yaklaşım önerilmez çünkü kaybın
birden fazla müşteriRemote Config
Remote Config şablonu. Bu tür çakışmalar birden fazla
veya API istemcilerinden ve API istemcilerinden gelen çakışan güncellemelerle
Firebase konsol kullanıcıları.
Remote Config şablon sürümünü yönetme konusunda yardım için bkz. Remote Config şablonları ve sürüm oluşturma.