Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Template dan Versi Konfigurasi Jarak Jauh

Template Remote Config adalah kumpulan parameter dan ketentuan berformat JSON sisi server yang telah Anda buat untuk proyek Firebase Anda. Anda dapat memodifikasi dan mengelola template menggunakan Firebase console, yang menampilkan konten template dalam format grafis di tab Parameter dan Ketentuan . Anda juga dapat menggunakan API backend Remote Config atau Firebase CLI untuk mengubah dan mengelola konfigurasi Anda.

Berikut ini 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 berversi baru dan menyimpan template sebelumnya sebagai versi yang dapat Anda ambil atau putar kembali sesuai kebutuhan. Nomor versi bertambah secara berurutan dari nilai awal yang disimpan oleh Remote Config. Semua template menyertakan bidang version seperti yang ditunjukkan, yang berisi metadata tentang versi spesifik tersebut.

Dengan Firebase console, Firebase CLI, atau API backend Remote Config, Anda dapat melakukan tugas pengelolaan versi berikut:

  • Daftar semua versi template yang tersimpan
  • Ambil versi tertentu
  • Putar kembali ke versi tertentu

Saat Anda mengelola template Remote Config, ingatlah ambang batas kedaluwarsa: Template Remote Config aktif saat ini yang digunakan oleh aplikasi Anda tidak kedaluwarsa; namun, jika diganti dengan pembaruan, versi sebelumnya hanya akan disimpan selama 90 hari, setelah itu akan kedaluwarsa dan tidak dapat diambil. Ada juga batas total 300 versi yang disimpan. Jika Anda ingin menyimpan atau memutar kembali ke 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. 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 yang disimpan mencakup informasi tentang apakah perubahan berasal dari Konsol, dengan REST API, dari rollback, atau apakah perubahan tersebut merupakan perubahan tambahan dari penyimpanan paksa template.

Firebase CLI

firebase remoteconfig:versions:list

Gunakan opsi --limit untuk membatasi jumlah versi yang dikembalikan. Lewati '0' untuk mengambil semua versi.

Daftar template mencakup metadata untuk semua versi yang disimpan, termasuk waktu pembaruan, pengguna yang membuatnya, dan apakah itu 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 dipilih saat ini 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

Secara opsional, Anda dapat menulis output ke file tertentu dengan -o, FILENAME .

Kembali ke versi tersimpan tertentu dari template Remote Config

Anda dapat memutar kembali ke versi template 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 memutar kembali ke template Remote Config yang tersimpan, 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 memutar kembali 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 dari versi 6, berbeda dari aslinya hanya dalam nomor versinya adalah 11. Versi asli 6 masih disimpan, dengan asumsi belum mencapai kedaluwarsa, dan versi 11 menjadi template aktif.

Unduh dan publikasikan template Remote Config

Unduh dan publikasikan template Remote Config untuk mengintegrasikannya ke dalam kontrol sumber dan sistem build Anda, mengotomatiskan pembaruan konfigurasi, dan menjaga agar parameter dan nilai tetap sinkron di beberapa proyek.

Anda dapat mendownload template Remote Config yang sedang aktif secara terprogram atau dari Firebase console. 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 diuji sepenuhnya dari lingkungan staging ke lingkungan produksi dengan mengunduhnya dari proyek staging dan memublikasikannya ke proyek produksi Anda.

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:

  1. Unduh template Remote Config saat ini .
  2. Validasi template Remote Config .
  3. Publikasikan template Remote Config .

Unduh Template Remote Config saat ini

Anda dapat mendownload template Remote Config saat ini dan yang aktif secara terprogram, atau menggunakan Firebase console.

Gunakan perintah berikut untuk mengunduh 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

  1. Dari tab Remote Config Parameters or Conditions , buka Menu , dan pilih Download current config file .
  2. 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 menampilkan 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 kirimkan dan, dalam 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 kesalahan validasi dalam respons JSON dan file headers Anda akan berisi respons non-200 (dan tanpa ETag).

Publikasikan template Remote Config

Setelah mengunduh template, membuat perubahan apa pun yang diperlukan pada konten JSON, dan memvalidasinya, Anda dapat memublikasikannya ke proyek.

Menerbitkan template menggantikan seluruh template konfigurasi yang ada dengan file yang diperbarui dan menambah versi template satu per satu. Karena seluruh konfigurasi diganti, jika Anda menghapus parameter dari file JSON dan memublikasikannya, parameter tersebut akan dihapus dari server dan tidak lagi tersedia untuk klien.

Setelah dipublikasikan, perubahan pada parameter dan nilai segera tersedia untuk aplikasi dan pengguna Anda. Jika perlu, Anda dapat memutar kembali ke versi sebelumnya .

Gunakan perintah berikut untuk memublikasikan 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

  1. Dari tab Parameter atau Kondisi Remote Config , buka Menu , dan pilih Terbitkan dari file .
  2. Saat diminta, klik Browse , navigasikan ke dan pilih file Remote Config yang ingin Anda terbitkan, lalu klik Select .
  3. File akan divalidasi dan, jika berhasil, Anda dapat mengklik Publikasikan untuk membuat 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 proyek yang berbeda:

  • Personalisasi tidak dapat diimpor dari proyek ke proyek.

    Misalnya, jika Anda mengaktifkan personalisasi di proyek Anda dan mengunduh serta mengedit template, Anda dapat menerbitkannya ke proyek yang sama, tetapi Anda tidak dapat memublikasikannya ke proyek yang berbeda kecuali Anda menghapus personalisasi dari template.

  • Ketentuan dapat diimpor dari proyek ke proyek, tetapi perhatikan bahwa setiap 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 menetapkan nilai platform iOS , template dapat dipublikasikan ke proyek lain, karena nilai platform sama untuk proyek apa pun. Namun, jika berisi kondisi yang bergantung pada ID aplikasi tertentu atau audiens pengguna yang tidak ada di proyek target, validasi akan gagal.

  • Jika template yang Anda rencanakan untuk diterbitkan berisi ketentuan yang mengandalkan Google Analytics, Analytics harus diaktifkan di proyek target.

Unduh 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 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 pasangan nilai kunci 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 ini dalam format XML untuk aplikasi Android, format daftar properti (plist) untuk aplikasi iOS, dan JSON untuk aplikasi web.

Sebaiknya unduh default Remote Config secara berkala sebelum rilis aplikasi baru untuk memastikan bahwa aplikasi Anda dan backend Remote Config tetap sinkron.

Untuk mengunduh file yang berisi default template:

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 yang ingin Anda unduh.

Konsol Firebase

  1. Di tab Parameter , buka Menu , dan pilih Unduh nilai default .
  2. Saat diminta, klik tombol radio yang sesuai dengan format file yang ingin Anda unduh, lalu klik Unduh file .

Untuk informasi selengkapnya tentang mengimpor nilai default Remote Config ke aplikasi Anda, lihat: