Template Remote Config adalah kumpulan parameter dan kondisi berformat JSON di sisi server yang telah Anda buat untuk project Firebase Anda. Anda dapat memodifikasi dan mengelola template menggunakan Firebase console, yang menampilkan konten template dalam format grafik di tab Parameter dan Ketentuan . Anda juga dapat menggunakan API backend Remote Config atau Firebase CLI untuk mengubah dan mengelola konfigurasi Anda.
Berikut adalah contoh file template:
{
"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"
}
}
Setiap kali Anda memperbarui parameter, Remote Config membuat template Remote Config versi baru dan menyimpan template sebelumnya sebagai versi yang dapat Anda ambil atau kembalikan sesuai kebutuhan. Nomor versi bertambah secara berurutan dari nilai awal yang disimpan oleh Remote Config. Semua template menyertakan kolom version
seperti yang ditampilkan, yang berisi metadata tentang versi spesifik tersebut.
Dengan Firebase console, Firebase CLI, atau API backend Remote Config, Anda dapat melakukan tugas manajemen versi berikut:
- Daftar semua versi templat yang disimpan
- Ambil versi tertentu
- Kembalikan ke versi tertentu
Saat Anda mengelola template Remote Config, perhatikan ambang kedaluwarsa: Template Remote Config aktif saat ini yang digunakan oleh aplikasi Anda tidak akan kedaluwarsa; namun, jika diganti dengan pembaruan, versi sebelumnya hanya akan disimpan selama 90 hari, setelah itu akan kedaluwarsa dan tidak dapat diambil kembali. Ada juga batas total 300 versi yang disimpan. Jika Anda ingin menyimpan atau mengembalikan template di luar batas tersebut, simpan dan simpan secara manual.
Kelola versi template Remote Config
Bagian ini menjelaskan cara mengelola versi template Remote Config Anda. Untuk detail selengkapnya tentang cara membuat, memodifikasi, dan menyimpan template secara terprogram, lihat Memodifikasi Remote Config secara terprogram .
Daftar semua versi tersimpan dari template Remote Config
Anda dapat mengambil daftar semua versi tersimpan dari template Remote Config. Sebagai contoh:
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);
});
}
Jawa
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()); }
ISTIRAHAT
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
Konsol Firebase
Di tab Parameter , pilih ikon "jam" yang ditampilkan di kanan atas. Tindakan ini akan membuka halaman Riwayat perubahan yang mencantumkan semua versi templat yang disimpan dalam menu daftar di sebelah kanan.
Detail yang ditampilkan untuk setiap versi tersimpan mencakup informasi tentang apakah perubahan tersebut berasal dari Konsol, dengan REST API, dari rollback, atau apakah perubahan inkremental dari penyimpanan paksa template.
Firebase CLI
firebase remoteconfig:versions:list
Gunakan opsi --limit
untuk membatasi jumlah versi yang dikembalikan. Lulus '0' untuk mengambil semua versi.
Daftar templat menyertakan metadata untuk semua versi yang disimpan, termasuk waktu pembaruan, pengguna yang membuatnya, dan apakah dibuat melalui konsol atau REST API. Berikut adalah contoh elemen versi:
{
"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"
}]
Ambil versi tertentu dari template Remote Config
Anda dapat mengambil versi tersimpan tertentu dari template Remote Config. Sebagai contoh:
Node.js
Lewati getTemplate()
tanpa argumen apa pun untuk mengambil versi terbaru dari template, atau untuk mengambil versi tertentu, gunakan getTemplateAtVersion()
.
// 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);
});
Jawa
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());
ISTIRAHAT
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
Parameter URL ?version_number
hanya valid untuk operasi GET
; Anda tidak dapat menggunakannya untuk menentukan nomor versi untuk pembaruan. Permintaan get serupa tanpa parameter ?version_number
akan mengambil template aktif saat ini.
Konsol Firebase
Secara default, panel detail di tab Riwayat perubahan menampilkan template aktif saat ini. Untuk melihat detail versi lain dalam daftar, pilih dari menu kanan.
Anda dapat melihat perbedaan mendetail dari versi yang saat ini dipilih dan versi tersimpan lainnya dengan mengarahkan kursor ke menu konteks untuk versi yang tidak dipilih dan memilih Bandingkan dengan versi yang dipilih.
Firebase CLI
firebase remoteconfig:get -v VERSION_NUMBER
Opsional, Anda dapat menulis output ke file tertentu dengan -o, FILENAME
.
Kembalikan ke versi tersimpan tertentu dari template Remote Config
Anda dapat memutar kembali ke versi templat yang tersimpan. Sebagai contoh:
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);
})
Jawa
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()); } }
ISTIRAHAT
Untuk melakukan roll back ke template Remote Config yang disimpan, terbitkan HTTP POST dengan metode kustom :rollback
dan, di badan permintaan, versi spesifik yang akan diterapkan. Sebagai contoh:
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}'
Respons berisi konten template tersimpan yang sekarang aktif, dengan metadata versi barunya.
Konsol Firebase
Untuk versi template sebelumnya yang memenuhi syarat untuk rollback, tombol opsi untuk rollback ke versi tersebut ditampilkan di kanan atas halaman Riwayat perubahan . Klik dan konfirmasikan ini hanya jika Anda yakin ingin memutar kembali ke versi tersebut dan segera menggunakan nilai tersebut untuk semua aplikasi dan pengguna.
Firebase CLI
firebase remoteconfig:rollback -v VERSION_NUMBER
Perhatikan bahwa operasi rollback ini secara efektif membuat versi bernomor baru. Misalnya, memutar kembali dari versi 10 ke versi 6 secara efektif membuat salinan baru versi 6, yang berbeda dari aslinya hanya karena nomor versinya adalah 11. Versi asli 6 masih disimpan, dengan asumsi belum mencapai kedaluwarsa, dan versi 11 menjadi template aktif.
Download dan publikasikan template Remote Config
Download dan publikasikan template Remote Config untuk mengintegrasikannya ke kontrol sumber Anda dan membangun sistem, mengotomatiskan pembaruan konfigurasi, dan menjaga sinkronisasi parameter dan nilai di beberapa proyek.
Anda dapat mendownload template Remote Config yang sedang aktif secara terprogram atau dari konsol Firebase. Anda kemudian dapat memperbarui file JSON yang diekspor dan memublikasikannya ke proyek yang sama, atau memublikasikannya ke proyek baru atau yang sudah ada.
Katakanlah Anda memiliki beberapa proyek yang mewakili tahapan berbeda dari siklus hidup pengembangan perangkat lunak Anda, seperti lingkungan pengembangan, pengujian, pementasan, dan produksi. Dalam hal ini, Anda dapat mempromosikan template yang telah teruji sepenuhnya dari lingkungan pementasan ke lingkungan produksi dengan mengunduhnya dari proyek pementasan dan memublikasikannya ke proyek produksi.
Anda juga dapat menggunakan metode ini untuk memigrasikan konfigurasi dari satu proyek ke proyek lainnya, atau mengisi proyek baru dengan parameter dan nilai dari proyek yang sudah ada.
Parameter dan nilai parameter yang dibuat khusus sebagai varian dalam eksperimen Pengujian A/B tidak disertakan dalam template yang diekspor.
Untuk mengekspor dan mengimpor template Remote Config:
- Unduh template Remote Config Config saat ini .
- Validasi template Remote Config .
- Publikasikan template Remote Config .
Unduh Template Remote Config saat ini
Anda dapat mengunduh template Remote Config saat ini dan yang aktif secara terprogram, atau menggunakan konsol Firebase.
Gunakan perintah berikut untuk mendownload template Remote Config aktif dalam format JSON:
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); }); }
Jawa
Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get(); // See the ETag of the fetched template. System.out.println("ETag from server: " + template.getETag());
ISTIRAHAT
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename
Perintah ini mengeluarkan payload JSON ke satu file, dan header (termasuk ETag) ke file headers
terpisah.
Konsol Firebase
- Dari tab Parameter atau Ketentuan Remote Config , buka Menu , dan pilih Download current config file .
- Saat diminta, klik Unduh file konfigurasi , pilih lokasi tempat Anda ingin menyimpan file, lalu klik Simpan .
Firebase CLI
firebase remoteconfig:get -o filename
Validasi template Remote Config
Anda dapat memvalidasi pembaruan template sebelum memublikasikannya menggunakan Firebase Admin SDK atau REST API. Template juga divalidasi saat Anda mencoba memublikasikan dari Firebase CLI atau Firebase console.
Proses validasi template memeriksa kesalahan seperti kunci duplikat untuk parameter dan kondisi, nama kondisi yang tidak valid atau kondisi yang tidak ada, atau ETag yang salah format. Misalnya, permintaan yang berisi lebih dari jumlah kunci yang diizinkan—2000—akan mengembalikan pesan kesalahan, Param count too large
.
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); }); }
Jawa
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()); } }
ISTIRAHAT
Validasi pembaruan template dengan menambahkan parameter URL ?validate_only=true
ke permintaan publikasi Anda:
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
Jika template Anda berhasil divalidasi, perintah curl mengembalikan template JSON yang Anda kirim dan, di file headers
yang disimpan, Anda akan menemukan status HTTP/2 200 dan ETag yang diperbarui dengan akhiran -0
. Jika template Anda tidak divalidasi, Anda akan menerima error validasi dalam respons JSON dan file headers
Anda akan berisi respons non-200 (dan tanpa ETag).
Publikasikan template Remote Config
Setelah mendownload template, membuat perubahan yang diperlukan pada konten JSON, dan memvalidasinya, Anda dapat memublikasikannya ke project.
Menerbitkan template menggantikan seluruh template konfigurasi yang ada dengan file yang diperbarui dan menambah versi template satu demi satu. Karena seluruh konfigurasi diganti, jika Anda menghapus parameter dari file JSON dan menerbitkannya, parameter tersebut dihapus dari server dan tidak lagi tersedia untuk klien.
Setelah dipublikasikan, perubahan pada parameter dan nilai akan segera tersedia untuk aplikasi dan pengguna Anda. Jika perlu, Anda dapat memutar kembali ke versi sebelumnya .
Gunakan perintah berikut untuk menerbitkan template Anda:
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); }); }
Jawa
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()); } }
ISTIRAHAT
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
Untuk perintah curl
ini, Anda dapat menentukan konten dengan menggunakan karakter "@", diikuti dengan nama file.
Konsol Firebase
- Dari tab Parameter atau Ketentuan Remote Config , buka Menu , dan pilih Publish from a file .
- Saat diminta, klik Browse , arahkan ke dan pilih file Remote Config yang ingin Anda publikasikan, lalu klik Select .
- File akan divalidasi dan, jika berhasil, Anda dapat mengeklik Publikasikan agar konfigurasi segera tersedia untuk aplikasi dan pengguna Anda.
Personalisasi dan ketentuan Remote Config disertakan dalam template yang diunduh, jadi penting untuk mengetahui batasan berikut saat mencoba memublikasikan ke project lain:
Personalisasi tidak dapat diimpor dari proyek ke proyek.
Misalnya, jika Anda mengaktifkan personalisasi di proyek dan mengunduh serta mengedit template, Anda dapat menerbitkannya ke proyek yang sama, tetapi Anda tidak dapat memublikasikannya ke proyek lain kecuali Anda menghapus personalisasi dari template.
Ketentuan dapat diimpor dari proyek ke proyek, tetapi perhatikan bahwa nilai bersyarat tertentu (seperti ID aplikasi atau audiens), harus ada di proyek target sebelum dipublikasikan.
Misalnya, jika Anda memiliki parameter Remote Config yang menggunakan kondisi yang menentukan nilai platform
iOS
, template dapat dipublikasikan ke proyek lain, karena nilai platform sama untuk semua proyek. Namun, jika berisi kondisi yang bergantung pada ID aplikasi tertentu atau audiens pengguna yang tidak ada di project target, validasi akan gagal.Jika template yang Anda rencanakan untuk dipublikasikan berisi ketentuan yang bergantung pada Google Analytics, Analytics harus diaktifkan di proyek target.
Download default template Remote Config
Karena aplikasi Anda mungkin tidak selalu terhubung ke Internet, Anda harus mengonfigurasi nilai default aplikasi sisi klien untuk semua parameter Remote Config. Anda juga harus menyinkronkan nilai default klien aplikasi dan nilai parameter default backend Remote Config secara berkala, karena nilai tersebut dapat berubah seiring waktu.
Seperti yang dijelaskan dalam tautan khusus platform di bagian akhir bagian ini, Anda dapat menyetel default ini secara manual di aplikasi Anda atau Anda dapat menyederhanakan proses ini dengan mengunduh file yang hanya berisi key-value pair untuk semua parameter dan nilai defaultnya di template Remote Config aktif. Anda kemudian dapat menyertakan file ini dalam proyek Anda dan mengonfigurasi aplikasi Anda untuk mengimpor nilai-nilai ini.
Anda dapat mengunduh file-file ini dalam format XML untuk aplikasi Android, format daftar properti (plist) untuk aplikasi iOS, dan JSON untuk aplikasi web.
Kami menyarankan untuk mengunduh default Remote Config secara berkala sebelum rilis aplikasi baru apa pun untuk memastikan bahwa aplikasi Anda dan backend Remote Config tetap sinkron.
Untuk mendownload file yang berisi template default:
ISTIRAHAT
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'
Gunakan XML
, PLIST
, atau JSON
sebagai nilai format
, bergantung pada format file mana yang ingin Anda unduh.
Konsol Firebase
- Di tab Parameter , buka Menu , dan pilih Download default values .
- Saat diminta, klik tombol radio yang sesuai dengan format file yang ingin Anda unduh, lalu klik Unduh file .
Untuk informasi selengkapnya tentang cara mengimpor nilai default Remote Config ke aplikasi Anda, lihat: