Mengintegrasikan Remote Config di Codelab Android

1. Pengantar

Terakhir Diperbarui: 2021-03-09

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 titik akses tunggal untuk parameter value. Aplikasi Anda mendapatkan value sisi server menggunakan logika yang sama yang digunakannya untuk mendapatkan value default dalam aplikasi, sehingga Anda bisa menambahkan kemampuan Remote Config ke aplikasi tanpa harus menuliskan banyak kode.

Untuk mengganti value default dalam aplikasi, gunakan Firebase console atau API backend Remote Config untuk membuat parameter dengan nama yang sama seperti parameter dalam aplikasi Anda. Untuk setiap parameter, Anda dapat menetapkan value default sisi server untuk mengganti value default dalam aplikasi. Anda juga dapat membuat value kondisional untuk mengganti value default dalam aplikasi untuk instance aplikasi yang memenuhi kondisi tertentu. Gambar ini menunjukkan pemrioritasan 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 value tanpa mengupdate aplikasi

Yang akan 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) Mendownload kode contoh

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

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 ini berisi beberapa folder. Kita akan menggunakan folder android_studio_folder.png config.

(Opsional) Mengimpor 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 "open".

5f90353b0b519642.png

Membuat 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 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 drop-down 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 artikel 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.png

48ade68c8de27d2.png

  1. Klik Buat project (atau Tambahkan 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 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 sudah menambahkan aplikasi ke project Firebase, klik Add app untuk menampilkan opsi platform.
  3. Masukkan nama paket aplikasi Anda di kolom Android package name.
  4. (Opsional) Masukkan Nama aplikasi.
  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 mendownload file konfigurasi yang berisi semua metadata Firebase yang diperlukan untuk aplikasi Anda. Klik Download google-services.json untuk mendapatkan file konfigurasi Android Firebase (google-services.json).

bc8ec7d3c9a28d75.png

a99b7415462dfc8b.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 {

// ...

}

Menambahkan Firebase SDK ke Aplikasi Android Anda

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

(Hal ini sudah dilakukan dalam kode quickstart 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 quickstart. Gunakan bagian ini saat meninjau kode codelab quickstart 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. Baca 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 menetapkan satu set nama parameter dan parameter value default menggunakan objek Map atau file resource XML yang tersimpan di folder res/xml aplikasi Anda. Aplikasi contoh panduan memulai Remote Config menggunakan file XML untuk menetapkan nama parameter dan parameter value 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 quickstart Remote Config.
  2. Tambahkan nilai ini ke objek Remote Config menggunakan setDefaultsAsync(int), seperti yang ditunjukkan berikut ini:

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

3. Mendapatkan parameter value 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 terkonfigurasi menggunakan setDefaultsAsync(int). Untuk mendapatkan value 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. Untuk membuat 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 di waktu berikutnya. Lihat Strategi pemuatan Remote Config untuk mengetahui 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 fleksibel).

Selama pengembangan aplikasi, sebaiknya Anda sering mengambil dan mengaktifkan konfigurasi (beberapa kali per jam) agar dapat melakukan iterasi yang 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) ke dalam 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 menjadi sesuatu yang 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 di 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 value 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 sisi kiri di bagian Engage untuk melihat dasbor Remote Config.
  3. Di bagian Add a 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 di 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

Fetching config...

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

Welcome to my awesome app!

String; Pesan selamat datang

Contoh screenshot:

28fa48f18da43002.png

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

cfe900477549adb7.png

  1. Pesan Selamat Datang akan 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: