Mulai Menggunakan Firebase Remote Config


Anda bisa menggunakan Firebase Remote Config untuk menetapkan parameter dalam aplikasi dan memperbarui value-nya di cloud, yang memungkinkan Anda untuk memodifikasi tampilan dan perilaku aplikasi tanpa mendistribusikan update aplikasi.

Library Remote Config digunakan untuk menyimpan parameter value default dalam aplikasi, mengambil parameter value terbaru dari backend Remote Config, dan mengontrol kapan nilai yang diambil akan tersedia untuk aplikasi Anda. Untuk mempelajari lebih lanjut, baca artikel Strategi pemuatan Remote Config.

Panduan ini akan menuntun Anda menjalankan langkah-langkah untuk memulai, serta menyediakan beberapa kode contoh, yang semuanya dapat di-clone atau didownload dari repositori GitHub firebase/quickstart-unity.

Langkah 1: Menambahkan Remote Config ke aplikasi

Sebelum dapat menggunakan Remote Config, Anda perlu:

  • Mendaftarkan project Unity Anda dan mengonfigurasikannya agar dapat menggunakan Firebase.

    • Jika project Unity Anda telah menggunakan Firebase, berarti project tersebut telah terdaftar dan dikonfigurasi untuk Firebase.

    • Jika belum memiliki project Unity, Anda dapat mendownload aplikasi contoh.

  • Menambahkan Firebase Unity SDK (khususnya, FirebaseRemoteConfig.unitypackage) ke project Unity Anda.

Perlu diperhatikan bahwa penambahan Firebase ke project Unity Anda memerlukan tindakan baik di Firebase console maupun di project Unity yang terbuka (misalnya, Anda mendownload file konfigurasi Firebase dari console, lalu memindahkannya ke project Unity).

Langkah 2: Menetapkan parameter value default dalam aplikasi

Anda bisa menetapkan parameter value default dalam aplikasi di objek Remote Config agar aplikasi Anda berperilaku seperti yang diharapkan sebelum terhubung ke backend Remote Config, dan agar ada value default yang tersedia jika tidak ada value yang ditetapkan pada backend.

Untuk melakukannya, buatlah kamus string, dan isi dengan key-value pair yang mewakili default yang ingin Anda tambahkan. Jika sudah mengonfigurasi parameter value backend Remote Config, Anda dapat mendownload file yang berisi key-value pair ini dan menggunakannya untuk membuat kamus string. Untuk mengetahui informasi selengkapnya, baca artikel Mendownload default template Remote Config.

(Properti yang bukan string akan dikonversi ke jenis properti saat SetDefaultsAsync() dipanggil).

System.Collections.Generic.Dictionary<string, object> defaults =
  new System.Collections.Generic.Dictionary<string, object>();

// These are the values that are used if we haven't fetched data from the
// server
// yet, or if we ask for values that the server doesn't have:
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults)
  .ContinueWithOnMainThread(task => {

Langkah 3: Mendapatkan parameter value yang akan digunakan dalam aplikasi

Sekarang Anda bisa mendapatkan parameter value dari objek Remote Config. Jika Anda menetapkan nilai di backend Remote Config, mengambilnya, lalu mengaktifkannya, nilai tersebut akan tersedia untuk aplikasi Anda. Jika tidak, Anda akan mendapatkan parameter value dalam aplikasi yang dikonfigurasi menggunakan SetDefaultsAsync().

Untuk mendapatkan nilai ini, gunakan GetValue(), dengan kunci parameter sebagai argumen. Tindakan ini menampilkan ConfigValue yang memiliki properti untuk mengonversi value ke dalam berbagai jenis dasar.

Langkah 4: Menetapkan parameter value

  1. Buka project Anda di Firebase console.
  2. Pilih Remote Config dari menu untuk melihat dasbor Remote Config.
  3. Tetapkan parameter dengan nama yang sama dengan parameter yang Anda tetapkan dalam aplikasi. Untuk setiap parameter, Anda dapat menetapkan nilai default (yang pada akhirnya akan mengganti nilai default dalam aplikasi) dan Anda juga dapat menetapkan nilai kondisional. Untuk mempelajari lebih lanjut, baca artikel Parameter dan kondisi Remote Config.

Langkah 5: Mengambil dan mengaktifkan nilai (jika perlu)

Untuk mengambil parameter value dari backend Remote Config, panggil metode FetchAsync(). Setiap nilai yang Anda tetapkan pada backend akan diambil dan disimpan dalam cache di objek Remote Config.

// Start a fetch request.
// FetchAsync only fetches new data if the current data is older than the provided
// timespan.  Otherwise it assumes the data is "recent enough", and does nothing.
// By default the timespan is 12 hours, and for production apps, this is a good
// number. For this example though, it's set to a timespan of zero, so that
// changes in the console will always show up immediately.
public Task FetchDataAsync() {
  DebugLog("Fetching data...");
  System.Threading.Tasks.Task fetchTask =
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(
      TimeSpan.Zero);
  return fetchTask.ContinueWithOnMainThread(FetchComplete);
}

Pada kode di atas, FetchComplete adalah metode yang tanda tangannya cocok dengan parameter salah satu overload ContinueWithOnMainThread().

Pada kode contoh di bawah, metode FetchComplete diberi tugas sebelumnya (fetchTask), yang memungkinkan FetchComplete menentukan apakah tugas tersebut selesai atau tidak. Kode tersebut menggunakan Info.LastFetchStatus untuk menentukan apakah penyelesaiannya juga berhasil. Jika demikian, parameter value Remote Config akan diaktifkan menggunakan ActivateAsync().

private void FetchComplete(Task fetchTask) {
  if (!fetchTask.IsCompleted) {
    Debug.LogError("Retrieval hasn't finished.");
    return;
  }

  var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
  var info = remoteConfig.Info;
  if(info.LastFetchStatus != LastFetchStatus.Success) {
    Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
    return;
  }

  // Fetch successful. Parameter values must be activated to use.
  remoteConfig.ActivateAsync()
    .ContinueWithOnMainThread(
      task => {
        Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
    });
}

Nilai yang diambil menggunakan FetchAsync() akan disimpan ke dalam cache secara lokal saat pengambilan selesai, tetapi tidak akan tersedia sampai ActivateAsync() dipanggil. Dengan begitu, Anda dapat memastikan bahwa nilai yang baru tidak diterapkan di tengah-tengah penghitungan, atau pada waktu lain yang dapat menyebabkan masalah atau perilaku aneh.

Langkah 6: Memproses update secara real time

Setelah mengambil parameter value, Anda dapat menggunakan Remote Config real-time untuk memproses update dari backend Remote Config. Sinyal Remote Config real-time ke perangkat yang terhubung saat update tersedia dan secara otomatis mengambil perubahan setelah Anda memublikasikan versi Remote Config baru.

Update real-time didukung oleh Firebase Unity SDK v11.0.0+ dan versi yang lebih baru untuk platform Android dan Apple.

  1. Di aplikasi Anda, tambahkan OnConfigUpdateListener untuk mulai memproses update dan otomatis mengambil parameter value baru atau yang diperbarui. Kemudian, buat ConfigUpdateListenerEventHandler untuk memproses peristiwa update. Contoh berikut memproses update dan menggunakan nilai yang baru diambil untuk menampilkan pesan selamat datang yang diperbarui.
// Invoke the listener.
void Start()
{
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
    += ConfigUpdateListenerEventHandler;
}

// Handle real-time Remote Config events.
void ConfigUpdateListenerEventHandler(
   object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) {
  if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) {
    Debug.Log(String.Format("Error occurred while listening: {0}", args.Error));
    return;
  }

  Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys));
  // Activate all fetched values and then display a welcome message.
  remoteConfig.ActivateAsync().ContinueWithOnMainThread(
    task => {
        DisplayWelcomeMessage();
    });
}

// Stop the listener.
void OnDestroy() {
    Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
      -= ConfigUpdateListenerEventHandler;
}

Jika kemudian Anda memublikasikan versi baru Remote Config, perangkat yang menjalankan aplikasi dan memproses perubahan akan memanggil pengendali penyelesaian.

Langkah berikutnya

Pelajari kasus penggunaan Remote Config jika Anda belum melakukannya, dan lihat beberapa dokumentasi strategi lanjutan dan konsep utama, termasuk: