Mengintegrasikan Remote Config di Codelab Android

1. Pengantar

Terakhir Diperbarui: 09-03-2021

Apa yang dimaksud dengan Firebase Remote Config?

Firebase Remote Config adalah layanan cloud yang dapat digunakan untuk mengubah perilaku dan tampilan aplikasi tanpa mengharuskan pengguna mendownload update aplikasi tanpa biaya. Saat menggunakan Remote Config, Anda membuat nilai default dalam aplikasi yang mengontrol perilaku dan tampilan aplikasi Anda. Kemudian, Anda dapat menggunakan Firebase console atau API backend Remote Config untuk mengganti nilai default dalam aplikasi untuk semua pengguna aplikasi atau segmen basis pengguna Anda. Aplikasi Anda mengontrol waktu penerapan update, dan dapat secara rutin memeriksa update serta menerapkannya dengan dampak minimal terhadap performa aplikasi.

Bagaimana cara kerjanya?

Remote Config menyertakan library klien yang menangani tugas penting seperti mengambil parameter value dan menyimpannya dalam cache, sambil tetap memberikan Anda kendali atas waktu pengaktifan value baru, sehingga dapat memengaruhi pengalaman pengguna aplikasi. Dengan demikian, Anda dapat menjaga pengalaman pengguna aplikasi dengan menentukan waktu untuk setiap perubahan.

Metode get library klien Remote Config menyediakan satu titik akses untuk parameter value. Aplikasi Anda mendapatkan nilai sisi server menggunakan logika yang sama yang digunakannya untuk mendapatkan nilai default dalam aplikasi, sehingga Anda bisa menambahkan kemampuan Remote Config ke aplikasi tanpa harus menuliskan banyak kode.

Untuk mengganti nilai default dalam aplikasi, Anda menggunakan Firebase console atau API backend Remote Config untuk membuat parameter dengan nama yang sama dengan parameter yang digunakan di aplikasi Anda. Untuk setiap parameter, Anda dapat menetapkan nilai default sisi server untuk mengganti nilai default dalam aplikasi, dan Anda juga dapat membuat nilai kondisional untuk mengganti nilai default dalam aplikasi untuk instance aplikasi yang memenuhi kondisi tertentu. Gambar ini menunjukkan cara memprioritaskan parameter value pada backend Remote Config dan aplikasi Anda:

61f12f33d2ac3133.png

Yang akan Anda pelajari

  • Cara menerapkan Firebase Remote Config
  • Cara menggunakan Firebase Remote Config untuk mengubah nilai tanpa mengupdate aplikasi

Yang Anda butuhkan

  • Versi terbaru Android Studio
  • Akun Firebase
  • (direkomendasikan, tetapi opsional) Perangkat Android fisik untuk menjalankan aplikasi Anda
  • Pengetahuan dasar tentang Java atau Kotlin

2. Mempersiapkan

(Opsional) Download kode contoh

Dalam codelab ini, Anda akan mem-build aplikasi pengujian Anda sendiri, tetapi jika ingin melihat dan menjalankan aplikasi contoh yang ada, Anda dapat mendownload kode contoh panduan memulai.

Klik tombol berikut untuk mendownload semua kode untuk codelab ini:

Ekstrak file ZIP yang didownload. Tindakan ini akan mengekstrak folder root bernama quickstart-android-master.

...atau clone repositori GitHub dari command line.

$ git clone https://github.com/firebase/quickstart-android.git

Repositori berisi beberapa folder. Kita akan menggunakan folder android_studio_folder.png config.

(Opsional) Impor kode contoh

Luncurkan Android Studio, pilih "Import project" di layar selamat datang. Kemudian, buka folder yang didownload dan pilih folder android_studio_folder.png config. Kemudian, klik "buka".

5f90353b0b519642.png

Buat Project Android Baru

  1. Di Android Studio, mulai project baru
  2. Pilih Aktivitas Dasar
  3. Di layar "Configure Your Project":
  4. Beri nama project Anda. Nama paket dan Lokasi penyimpanan akan otomatis dibuat untuk Anda.
  5. Bahasa: Java
  6. SDK Minimum 16

3. Menambahkan Firebase dan Firebase Analytics ke Project Android Anda

Membuat project Firebase

Agar dapat menambahkan Firebase ke aplikasi Android, Anda perlu membuat project Firebase yang akan dihubungkan ke aplikasi iOS. Buka bagian Memahami Project Firebase untuk mempelajari project Firebase lebih lanjut.

  1. Di Firebase console, klik Tambahkan project, lalu pilih atau masukkan Nama project. 910158221fe46223.png

Jika sudah memiliki project Google Cloud Platform (GCP), Anda dapat memilih project dari menu dropdown untuk menambahkan resource Firebase ke project tersebut.

  1. (Opsional) Jika membuat project baru, Anda dapat mengedit Project ID.

Firebase otomatis menetapkan ID unik ke project Firebase Anda. Buka bagian Memahami Project Firebase untuk mempelajari cara Firebase menggunakan project ID.

  1. Klik Lanjutkan.
  2. Siapkan Google Analytics untuk project Anda dan optimalkan penggunaan produk-produk Firebase berikut:
  • Firebase Crashlytics
  • Firebase Predictions
  • Firebase Cloud Messaging
  • Firebase In-App Messaging
  • Firebase Remote Config
  • Firebase A/B Testing

Saat diminta, pilih untuk menggunakan akun Google Analytics yang ada atau membuat akun baru. Jika Anda memilih untuk membuat akun baru, pilih lokasi pelaporan Analytics Anda, lalu setujui setelan berbagi data dan persyaratan Google Analytics untuk project Anda.

1282a798556779ab.png48ade68c8de27d2.png

  1. Klik Buat project (atau Tambahkan Firebase, jika Anda menggunakan project GCP yang sudah ada).

Firebase otomatis menyediakan resource untuk project Firebase Anda. Setelah selesai, Anda akan diarahkan ke halaman ringkasan untuk project Firebase Anda di Firebase console.

Mendaftarkan aplikasi Anda ke Firebase

Setelah memiliki project Firebase, Anda dapat menambahkan aplikasi Android ke dalamnya.

Buka bagian Memahami Project Firebase untuk mempelajari lebih lanjut praktik terbaik dan pertimbangan dalam menambahkan aplikasi ke project Firebase, termasuk cara menangani beberapa varian build.

  1. Buka Firebase console.
  2. Di bagian atas halaman Ringkasan Project, klik ikon Android untuk meluncurkan alur kerja penyiapan. Jika Anda sudah menambahkan aplikasi ke project Firebase, klik Tambahkan aplikasi untuk menampilkan opsi platform.
  3. Masukkan nama paket aplikasi Anda di kolom Android package name.
  4. (Opsional) Masukkan Nama panggilan aplikasi.
  5. Kosongkan kolom SHA-1 karena SHA-1 tidak diperlukan untuk project ini.
  6. Klik Daftarkan aplikasi.

Tambahkan File Konfigurasi Firebase

Selanjutnya, Anda akan diminta untuk mendownload file konfigurasi yang berisi semua metadata Firebase yang diperlukan untuk aplikasi Anda. Klik Download google-services.json untuk mendapatkan file konfigurasi Android Firebase Anda (google-services.json).

bc8ec7d3c9a28d75.pnga99b7415462dfc8b.png

Dalam file Gradle level project (build.gradle), tambahkan aturan untuk menyertakan plugin Gradle Layanan Google. Pastikan Anda juga memiliki repositori Maven Google.

build.gradle level project (<project>/build.gradle):

buildscript {

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }

  dependencies {
    // ...

    // Add the following line:
    classpath 'com.google.gms:google-services:4.3.5'  // Google Services plugin
  }
}

allprojects {
  // ...

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    // ...
  }
}

Dalam file Gradle modul (level aplikasi) (biasanya app/build.gradle), terapkan plugin Gradle Layanan Google:

build.gradle level aplikasi (<project>/<app-module>/build.gradle):

apply plugin: ‘com.android.application'

// Tambahkan baris berikut:

apply plugin: 'com.google.gms.google-services' // Plugin Layanan Google

android {

// ...

}

Tambahkan Firebase SDK ke Aplikasi Android Anda

Untuk Remote Config, Google Analytics diperlukan untuk penargetan bersyarat instance aplikasi terhadap properti pengguna dan audiens. Pastikan Anda mengaktifkan Google Analytics di project Anda.

(Langkah ini sudah dilakukan dalam kode panduan memulai contoh)

Dengan Firebase Android BoM, deklarasikan dependensi untuk library Android Remote Config dalam file Gradle modul (level aplikasi) (biasanya app/build.gradle). Dengan menggunakan Firebase Android BoM, aplikasi Anda akan selalu menggunakan versi library Android Firebase yang kompatibel.

Selain itu, sebagai bagian dari penyiapan Analytics, Anda perlu menambahkan Firebase SDK untuk Google Analytics ke aplikasi Anda. Di bagian dependensi, tambahkan kode berikut:

app/build.gradle

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:26.6.0')

    // Declare the dependencies for the Remote Config and Analytics libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-config'
    implementation 'com.google.firebase:firebase-analytics'
}

Menyinkronkan project Anda dengan file gradle

Untuk memastikan semua dependensi tersedia untuk aplikasi Anda, sinkronkan project Anda dengan file gradle dengan memilih File > Sync Project with Gradle Files.

4. Meninjau komponen utama untuk Remote Config

Sekarang kita akan meninjau langkah-langkah untuk menggunakan Remote Config di aplikasi. Langkah-langkah ini telah diselesaikan dalam kode codelab panduan memulai. Gunakan bagian ini saat meninjau kode codelab panduan memulai untuk memahami apa yang terjadi.

1. Mendapatkan Objek Singleton Remote Config

Dapatkan instance objek Remote Config dan tetapkan interval pengambilan minimum agar dapat diperbarui secara rutin:

MainActivity.java

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

Objek singleton ini digunakan untuk menyimpan parameter value default dalam aplikasi, mengambil parameter value terbaru dari backend, dan mengontrol kapan nilai yang diambil akan tersedia untuk aplikasi Anda.

Selama pengembangan, sebaiknya tetapkan interval pengambilan minimum yang relatif rendah. Lihat Throttling untuk mengetahui informasi selengkapnya.

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 nilai default yang tersedia jika tidak ada nilai yang ditetapkan pada backend.

Anda dapat menentukan sekumpulan nama parameter dan parameter value default menggunakan objek Map atau file resource XML yang disimpan di folder res/xml aplikasi Anda. Aplikasi contoh panduan memulai Remote Config menggunakan file XML untuk menentukan nama dan nilai parameter default. Berikut cara membuat file XML Anda sendiri:

  1. Buat folder xml di folder res.

4b8a2a637a626e94.png

  1. Klik kanan folder xml yang baru dibuat, lalu buat file.

358b4ba740120ece.png

  1. Tetapkan nilai default. Di bagian berikutnya, Anda akan mencoba mengubah nilai default dalam file XML panduan memulai Remote Config.
  2. Tambahkan nilai ini ke objek Remote Config menggunakan setDefaultsAsync(int), seperti yang ditunjukkan:

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

3. Mendapatkan nilai parameter yang akan digunakan dalam aplikasi Anda

Sekarang Anda bisa mendapatkan parameter value dari objek Remote Config. Jika Anda menetapkan nilai di backend, mengambilnya, lalu mengaktifkannya, nilai tersebut akan tersedia untuk aplikasi Anda. Jika tidak, Anda akan mendapatkan parameter value dalam aplikasi yang dikonfigurasi menggunakan setDefaultsAsync(int). Untuk mendapatkan nilai ini, panggil metode yang tercantum di bawah ini sesuai jenis data yang diharapkan oleh aplikasi Anda, dengan kunci parameter sebagai argumen:

4. Mengambil dan mengaktifkan nilai

  1. Untuk mengambil parameter value dari backend Remote Config, panggil metode fetch(). Setiap nilai yang Anda tetapkan di backend akan diambil dan disimpan di objek Remote Config.
  2. Agar parameter value yang diambil tersedia untuk aplikasi Anda, panggil metode activate(). Jika Anda ingin mengambil dan mengaktifkan nilai dalam satu panggilan, gunakan permintaan fetchAndActivate() untuk mengambil nilai dari backend Remote Config dan membuatnya tersedia untuk aplikasi:

MainActivity.java

mFirebaseRemoteConfig.fetchAndActivate()
        .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    boolean updated = task.getResult();
                    Log.d(TAG, "Config params updated: " + updated);
                    Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                            Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(MainActivity.this, "Fetch failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

Karena parameter value terbaru ini memengaruhi perilaku dan tampilan aplikasi, Anda harus mengaktifkan nilai yang diambil pada saat yang tepat untuk memastikan pengalaman yang lancar bagi pengguna, misalnya saat pengguna membuka aplikasi Anda. Lihat Strategi pemuatan Remote Config untuk mengetahui informasi dan contoh selengkapnya.

Pembatasan

Jika aplikasi terlalu sering melakukan pengambilan dalam jangka waktu yang singkat, panggilan pengambilan akan di-throttle dan SDK akan menampilkan FirebaseRemoteConfigFetchThrottledException. Sebelum SDK versi 17.0.0, batasnya adalah 5 permintaan pengambilan dalam jangka waktu 60 menit (versi yang lebih baru memiliki batas yang lebih fleksibel).

Selama pengembangan aplikasi, sebaiknya ambil dan aktifkan konfigurasi sesering mungkin (berkali-kali per jam) agar Anda dapat melakukan iterasi dengan cepat ketika mengembangkan dan menguji aplikasi. Untuk mengakomodasi iterasi yang cepat pada project yang beranggotakan hingga 10 developer, Anda dapat menetapkan objek FirebaseRemoteConfigSettings dengan interval pengambilan minimum yang rendah (setMinimumFetchIntervalInSeconds) di aplikasi Anda untuk sementara.

Interval pengambilan minimum default untuk Remote Config adalah 12 jam. Artinya, konfigurasi tidak akan diambil dari backend lebih dari sekali dalam jangka waktu 12 jam, terlepas dari berapa banyak panggilan pengambilan yang sebenarnya dilakukan. Secara khusus, interval pengambilan minimum ditentukan dengan urutan berikut:

  1. Parameter di fetch(long)
  2. Parameter di FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. Nilai default 12 jam

Untuk menetapkan interval pengambilan minimum ke nilai kustom, gunakan FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long).

5. Mengubah perilaku aplikasi dengan Remote Config

Mengubah parameter default dalam aplikasi

Buka res/xml/remote_config_defaults.xml dan ubah nilai default ke nilai lain.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
    <entry>
        <key>loading_phrase</key>
        <value>Fetching config...</value>
    </entry>
    <entry>
        <key>welcome_message_caps</key>
        <value>false</value>
    </entry>
    <entry>
        <key>welcome_message</key>
        <value>Welcome to my awesome app!</value>
    </entry>
</defaultsMap>
    <!-- END xml_defaults -->

Memverifikasi perubahan nilai default dalam aplikasi

  1. Jalankan project di emulator atau menggunakan perangkat pengujian untuk mengonfirmasi perilaku.
  2. Klik Buka pada versi Java atau Kotlin.

c1582b989c25ced.png

  1. Tinjau pesan selamat datang di tampilan utama.

4c838bf5a629d5b8.png

Menetapkan parameter value di backend Remote Config

Sekarang, mari kita uji pengiriman nilai melalui Remote Config. Dengan menggunakan Firebase console atau API backend Remote Config, Anda dapat membuat nilai default sisi server baru yang menggantikan nilai dalam aplikasi sesuai dengan penargetan pengguna atau logika kondisional yang diinginkan. Bagian ini menjelaskan langkah-langkah Firebase console untuk membuat nilai tersebut.

  1. Buka Firebase console, lalu buka project Anda.
  2. Pilih Remote Config dari menu sebelah kiri di bagian Engage untuk melihat dasbor Remote Config.
  3. Di bagian Tambahkan parameter, masukkan Parameter key.. Di bagian Default value, tambahkan teks apa pun yang Anda inginkan. Kemudian, klik Tambahkan Parameter. Untuk codelab ini, kita akan menggunakan kunci parameter dalam file res/xml/remote_config_defaults.xml. Lihat tabel di bawah untuk mengetahui detailnya:

Kunci parameter

Nilai default (remote_config_defaults.xml)

Deskripsi

loading_phrase

Mengambil konfigurasi...

String; Ditampilkan saat mengambil nilai Remote Config.

welcome_message_caps

false

Boolean; Jika benar (true), akan mengubah welcome_message menjadi huruf kapital semua

welcome_message

Selamat datang di aplikasi keren saya.

String; Pesan selamat datang

Contoh screenshot:

28fa48f18da43002.png

  1. Setelah selesai menambahkan parameter, klik "Publikasikan Perubahan".
  2. Jalankan aplikasi Anda di emulator atau perangkat lagi, lalu klik tombol "Fetch Remote Welcome" kali ini.

cfe900477549adb7.png

  1. Pesan Selamat Datang harus diperbarui berdasarkan parameter dan nilai Remote Config Anda.

6. Selamat

Selamat, Anda telah berhasil menggunakan Remote Config untuk mengubah pesan selamat datang. Ada banyak cara lain untuk memanfaatkan Remote Config guna mengubah dan menyesuaikan aplikasi. Lihat referensi tambahan di bawah: