Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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 Firebase console, Firebase CLI, atau API backend 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: 90 hari dari waktu pembuatan, atau batas total sebanyak 300 versi tersimpan. Jika Anda ingin menyimpan atau melakukan roll back ke template di luar batas tersebut, simpan secara manual. Template Remote Config aktif saat ini yang digunakan oleh aplikasi Anda tidak akan habis masa berlakunya. Namun, jika template tersebut telah aktif selama 90 hari sejak dibuat dan digantikan dengan update, template ini tidak dapat diambil lagi (karena masa berlakunya telah habis).

Mengelola versi template Remote Config

Bagian ini menjelaskan cara mengelola versi template Remote Config. Untuk detail selengkapnya tentang cara membuat, mengubah, dan menyimpan template secara terprogram, lihat 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>: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": "2018-05-12T02:38:54Z",
    "update_user": {
      "email": "jane@developer.org",
    },
    "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</pre>

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 Change 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>" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'</pre>

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.