Pembuatan Versi dan Template Remote Config

Template Remote Config adalah serangkaian parameter dan kondisi berformat JSON di sisi server yang telah Anda buat untuk project Firebase. Anda dapat mengubah dan mengelola template ini menggunakan Firebase console yang akan menampilkan konten template dalam format grafis di tab Parameters dan Conditions. Anda juga dapat menggunakan API backend Remote Config atau Firebase CLI untuk mengubah dan mengelola konfigurasi.

Berikut 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 roll back sesuai kebutuhan. Nomor versi bertambah secara urut dari nilai awal yang disimpan oleh Remote Config. Semua template menyertakan kolom version seperti yang ditunjukkan, yang berisi metadata tentang versi spesifik tersebut.

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

  • Mencantumkan semua versi template tersimpan
  • Mengambil versi tertentu
  • Melakukan roll back ke versi tertentu

Saat Anda mengelola template Remote Config, perhatikan batas masa berlakunya: Template Remote Config yang saat ini aktif dan digunakan oleh aplikasi Anda tidak akan habis masa berlakunya. Namun, jika template tersebut diganti dengan yang baru, versi sebelumnya hanya akan disimpan selama 90 hari. Setelah itu, versi tersebut akan berakhir masa berlakunya dan tidak dapat diambil. Terdapat juga batas total 300 versi yang disimpan. Jika Anda ingin menyimpan atau melakukan roll back ke template di luar batas tersebut, simpan secara manual.

Mengelola versi template Remote Config

Bagian ini berisi penjelasan mengenai cara mengelola versi template Remote Config. Untuk mengetahui detail selengkapnya tentang cara membuat, mengubah, dan menyimpan template secara terprogram, baca artikel Mengubah Remote Config secara terprogram.

Mencantumkan semua versi tersimpan template Remote Config

Anda dapat mengambil daftar semua versi tersimpan template Remote Config. 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);
    });
}

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

Firebase console

Di tab Parameters, pilih ikon "jam" yang ditampilkan di kanan atas. Tindakan ini akan membuka halaman Change history yang mencantumkan semua versi template tersimpan di menu daftar di sebelah kanan.

Detail yang ditampilkan untuk setiap versi tersimpan berisi informasi tentang apakah perubahan berasal dari Console, dengan REST API, dari rollback, atau apakah perubahan tersebut merupakan perubahan inkremental dari penyimpanan template yang dipaksa.

Firebase CLI

firebase remoteconfig:versions:list

Gunakan opsi --limit untuk membatasi jumlah versi yang ditampilkan. Teruskan '0' untuk mengambil semua versi.

Daftar template ini mencakup metadata untuk semua versi tersimpan, termasuk waktu update, pengguna yang melakukannya, dan apakah dilakukan 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"
  }]

Mengambil versi template Remote Config tertentu

Anda dapat mengambil versi template Remote Config tertentu yang tersimpan. Contoh:

Node.js

Teruskan getTemplate() tanpa argumen apa pun untuk mengambil versi terbaru template. 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);
  });

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

Parameter URL ?version_number hanya valid untuk operasi GET; Anda tidak dapat menggunakannya untuk menentukan nomor versi untuk update. Permintaan get yang serupa tanpa parameter ?version_number akan mengambil template aktif saat ini.

Firebase console

Secara default, panel detail di tab Change history menampilkan template aktif saat ini. Untuk melihat detail dari versi lain dalam daftar, pilih dari menu di sebelah kanan.

Anda dapat melihat perbedaan terperinci dari versi yang saat ini dipilih dan versi lain yang tersimpan dengan mengarahkan kursor ke menu konteks untuk setiap versi yang tidak dipilih dan memilih Compare with selected version.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

Jika ingin, Anda dapat menulis output ke file tertentu dengan -o, FILENAME.

Melakukan roll back ke template Remote Config tersimpan versi tertentu

Anda dapat melakukan roll back ke versi template yang tersimpan. 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);
  })

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

Untuk melakukan roll back ke salah satu template Remote Config tersimpan, keluarkan HTTP POST dengan metode kustom :rollback dan, dalam isi permintaan, tetapkan versi tertentu yang ingin diterapkan. 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 ini berisi konten dari template tersimpan yang aktif saat ini, dengan metadata versi barunya.

Firebase console

Untuk beralih ke versi template sebelumnya yang memenuhi syarat untuk rollback, tombol opsi untuk roll back ke versi tersebut ditampilkan di kanan atas halaman Change history. Klik dan konfirmasi tombol ini hanya jika Anda yakin ingin melakukan rollback ke versi itu dan gunakan nilai tersebut segera 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, melakukan roll back dari versi 10 ke versi 6 akan menghasilkan salinan baru untuk versi 6, yang berbeda dari aslinya hanya pada nomor versinya, yaitu 11. Versi 6 yang asli masih disimpan, dengan asumsi bahwa akhir masa berlakunya belum tercapai, yang akan membuat versi 11 menjadi template aktif.

Mendownload default template Remote Config

Karena aplikasi 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 parameter value default backend Remote Config secara berkala karena nilai tersebut dapat berubah dari waktu ke waktu.

Seperti yang dijelaskan pada link khusus platform di akhir bagian ini, Anda dapat menetapkan default ini secara manual di aplikasi atau menyederhanakan proses ini dengan mendownload file yang hanya berisi key-value pair untuk semua parameter dan nilai defaultnya di template Remote Config yang aktif. Selanjutnya, Anda dapat menyertakan file ini dalam project dan mengonfigurasi aplikasi untuk mengimpor nilai ini.

Anda dapat mendownload file ini dalam format XML untuk aplikasi Android, format daftar properti (plist) untuk aplikasi iOS, dan JSON untuk aplikasi web.

Sebaiknya download default Remote Config secara berkala sebelum rilis aplikasi baru, untuk memastikan aplikasi dan backend Remote Config tetap sinkron.

Untuk mendownload file yang berisi template default:

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'

Gunakan XML, PLIST, atau JSON sebagai nilai format, bergantung pada format file yang ingin Anda download.

Firebase console

  1. Di tab Parameters, buka Menu, lalu pilih Download default values.
  2. Jika diminta, klik tombol pilihan yang sesuai dengan format file yang ingin didownload, lalu klik Download file.

Untuk mengetahui informasi lebih lanjut tentang cara mengimpor nilai default Remote Config ke aplikasi, lihat: