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 Parameter dan Kondisi. Anda juga dapat menggunakan API backend Remote Config 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 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 dengan Firebase console

Firebase console menyediakan antarmuka grafis agar Anda dapat mencantumkan versi template, melihat detailnya, dan melakukan roll back sesuai kebutuhan. Untuk menjalankan tugas ini:

  1. Di tab Parameter, pilih ikon "jam" yang ditampilkan di kanan atas. Tindakan ini akan membuka halaman Histori perubahan yang mencantumkan semua versi template tersimpan di menu daftar di sebelah kanan.

  2. Secara default, panel detail menampilkan template aktif saat ini. Untuk melihat detail dari versi lain dalam daftar, pilih dari menu 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.

  3. 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 Bandingkan dengan versi yang dipilih.

  4. Untuk versi template sebelumnya yang memenuhi syarat untuk rollback, tombol opsi untuk melakukan roll back ke versi tersebut akan ditampilkan di kanan atas halaman. Klik dan konfirmasi tombol ini hanya jika Anda yakin ingin melakukan roll back ke versi itu dan gunakan nilai tersebut segera untuk semua aplikasi dan pengguna.

Mengelola versi template Remote Config dengan API backend

Bagian ini menjelaskan cara mengelola versi template Remote Config menggunakan REST API dan Firebase Admin SDK. Untuk detail selengkapnya tentang cara membuat, mengubah, dan menyimpan template secara terprogram, lihat Mengubah Remote Config secara terprogram.

Mencantumkan semua versi template Remote Config yang tersimpan

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

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

Respons ini mencakup metadata untuk semua versi tersimpan, termasuk waktu update, pengguna yang membuatnya, dan apakah dibuat melalui konsol atau REST API. Berikut ini 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

Dengan API backend Remote Config, Anda dapat mengambil versi template Remote Config yang tersimpan. Teruskan getTemplate() tanpa argumen apa pun untuk mengambil versi terbaru template. Untuk mengambil versi tertentu, gunakan getTemplateAtVersion(). Contoh:

Node.js

// 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);
  });

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.

Melakukan roll back ke template Remote Config tersimpan versi tertentu

Dengan API backend Remote Config, 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);
  })

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.

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.