Mengintegrasikan Remote Config di Codelab Android

1. Pengantar

Terakhir diperbarui: 09-03-2021

Apa itu Firebase Remote Config?

Firebase Remote Config adalah layanan cloud yang dapat digunakan untuk mengubah perilaku dan tampilan aplikasi Anda tanpa mengharuskan pengguna mendownload update aplikasi tanpa biaya. Ketika 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 memberi Anda kontrol atas waktu pengaktifan value baru, sehingga dapat memengaruhi pengalaman pengguna aplikasi. Dengan begitu, Anda dapat menjaga pengalaman pengguna aplikasi dengan menentukan waktu untuk setiap perubahan.

Metode get library klien Remote Config menyediakan titik akses tunggal 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 menulis banyak kode.

Untuk mengganti nilai default dalam aplikasi, gunakan 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 bisa menyetel nilai default sisi server untuk mengganti nilai default dalam aplikasi, dan Anda juga bisa membuat nilai kondisional guna mengganti nilai default dalam aplikasi untuk instance aplikasi yang memenuhi ketentuan tertentu. Gambar ini menunjukkan cara memprioritaskan parameter value pada backend Remote Config dan aplikasi Anda:

61f12f33d2ac3133.pngS

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 membangun aplikasi pengujian sendiri, tetapi jika ingin melihat dan menjalankan aplikasi contoh yang sudah 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 membuat clone repositori GitHub dari command line.

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

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

(Opsional) Mengimpor kode contoh

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

5f90353b0b519642.pngS

Membuat Project Android Baru

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

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 untuk terhubung ke aplikasi iOS. Buka bagian Memahami Project Firebase untuk mempelajari project Firebase lebih lanjut.

  1. Di Firebase console, klik Add project, lalu pilih atau masukkan Project name. 910158221fe46223.pngS

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 menetapkan ID unik ke project Firebase Anda secara otomatis. Buka Memahami Project Firebase untuk mempelajari cara Firebase menggunakan project ID.

  1. Klik Lanjutkan.
  2. Siapkan Google Analytics untuk project Anda agar Anda mendapatkan pengalaman optimal menggunakan salah satu 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, lalu setujui setelan berbagi data dan persyaratan Google Analytics untuk project Anda.

1282a798556779ab.png

48ade68c8de27d2.pngS

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

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

Mendaftarkan aplikasi 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 untuk menambahkan aplikasi ke project Firebase, termasuk cara menangani beberapa varian build.

  1. Buka Firebase console.
  2. Di bagian atas halaman Project Overview, 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 App nickname.
  5. Biarkan kolom SHA-1 kosong karena SHA-1 tidak diperlukan untuk project ini.
  6. Klik Daftarkan aplikasi.

Menambahkan 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.png

a99b7415462dfc8b.png

Di 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 tingkat 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 {

// ...

}

Menambahkan Firebase SDK ke Aplikasi Android

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

(Hal ini sudah dilakukan dalam contoh kode panduan memulai)

Dengan menggunakan 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 dengan file gradle

Guna memastikan bahwa semua dependensi tersedia untuk aplikasi Anda, sinkronkan project Anda dengan file gradle dengan memilih File > Menyinkronkan Project dengan File Gradle.

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 lebih sering:

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. Baca Throttling untuk mengetahui informasi selengkapnya.

2. Menetapkan parameter value default dalam aplikasi

Anda bisa menetapkan parameter value default dalam aplikasi pada 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.

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

  1. Buat folder xml di folder res.

4b8a2a637a626e94.pngS

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

358b4ba740120ece.pngS

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

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

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, 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 value

  1. Untuk mengambil parameter value dari backend Remote Config, panggil metode fetch(). Setiap nilai yang Anda tetapkan dalam backend akan diambil dan disimpan di objek Remote Config.
  2. Agar parameter value yang diambil tersedia untuk aplikasi Anda, panggil metode activate(). Jika ingin mengambil dan mengaktifkan nilai dalam satu panggilan, Anda dapat menggunakan permintaan pengambilanAndActivate() untuk mengambil nilai dari backend Remote Config dan menyediakannya 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 lagi. Lihat Strategi pemuatan Remote Config untuk informasi dan contoh selengkapnya.

Throttling

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 longgar).

Selama pengembangan aplikasi, sebaiknya Anda sering mengambil dan mengaktifkan konfigurasi (berkali-kali per jam) agar 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) dalam aplikasi Anda untuk sementara.

Interval pengambilan minimum default untuk Remote Config adalah 12 jam, yang berarti bahwa 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 dalam 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 menjadi 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 gunakan perangkat pengujian untuk mengonfirmasi perilaku tersebut.
  2. Klik Open pada versi Java atau Kotlin.

c1582b989c25ced.png

  1. Tinjau pesan selamat datang di tampilan utama.

4c838bf5a629d5b8.pngS

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, 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. Pada Default value tambahkan teks apa pun yang Anda inginkan. Lalu 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

salah

Boolean; Jika benar, ubah Welcome_message menjadi huruf besar semua

welcome_message

Selamat datang di aplikasi hebat saya!

String; Pesan selamat datang

Contoh screenshot:

28fa48f18da43002.pngS

  1. Setelah Anda selesai menambahkan parameter, klik "Publikasikan Perubahan".
  2. Jalankan lagi aplikasi Anda di emulator atau perangkat, lalu klik "Ambil Selamat Datang Jarak Jauh" tombol 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 dalam menggunakan Remote Config untuk mengubah dan menyesuaikan aplikasi. Lihat referensi tambahan di bawah: