Firebase Analytics: Events dan User Properties
Assalamualaikum Warahmatullahi Wabarakatuh.
Pada kesempatan kali ini saya akan menjelaskan cara penggunaan Firebase Analytics serta Log Events untuk project aplikasi Android, dengan menggunakan Firebase Analytics, kita bisa melihat bagaimana pengguna/user berperilaku.
Didalam Firebase Analytics kita bisa menggunakan Log Event, dengan menggunakannya, seorang developer bisa melihat peristiwa/event pada aplikasi yang dibuatnya saat user menggunakan dan berinteraksi dengan aplikasi tersebut, misalnya jika kita membuat sebuah aplikasi E-Commerce atau aplikasi jual beli online, seorang developer bisa tahu jenis atau produk apa saja yang sering di beli oleh user, contoh lainnya misalnya, didalam aplikasi ada beberapa fitur, dengan menggunakan analytics, kita bisa tahu fitur apa saja yang seri di akses oleh pengguna, Firebase Analytics akan mengirimkan laporannya kepada kita satu hari sekali.
Terakhir yang saya tahu, Firebase Analytics juga bisa mengirimkan laporan jika terjadi Bug/Error pada aplikasi yang kita buat, sehingga developer bisa memperbaikinya tanpa harus user tersebut melaporkannya kepada kita.
Menambahkan Events dan Parameter
1) Pertma kita tambahkan terlebuh dahulu Firebase pada Project Aplikasi yang kita buat, kalian bisa melihat Tutorialnya Disini.
2) Buat project baru pada android studio kalian, jika sudah, buka file build.gradle(app-level), selanjutnya masukan library berikut ini:
compile 'com.google.firebase:firebase-core:11.4.0'
Library tersebut digunakan untuk mengakses layanan Analytics.
3) Buka file AndroidManifest.xml, masukan ketiga permission berikut ini:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Penjelasan:
- ACCESS_NETWORK_STATE: Digunakan untuk mengizinkan aplikasi mengakses informasi tentang jaringan.
- INTERNET: Untuk mengizinkan aplikasi membuka soket jaringan.
- WAKE_LOCK: Memungkinkan menggunakan PowerManager WakeLocks untuk menjaga agar prosesor tidak tertidur atau layar agar tidak redup.
4) Pada contoh kali ini, kita akan membuat aplikasi E-Commerce atau aplikasi jual beli online, tapi bukan aplikasi E-Commerce yang sebenarnya, ini hanya contoh saja sebagai gambaran bagaimana Firebase Analytics serta Log Events bekerja.
Selanjutnya kalian edit dan maskan kode program pada MainActivity.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical"
tools:context="cianjur.developer.net.firebaseexample.firebase_core">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="Cianjur E-Commerce"
android:textSize="20sp"
android:textStyle="normal|bold" />
<EditText
android:id="@+id/item_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="ID Barang"
android:inputType="textPersonName" />
<EditText
android:id="@+id/item_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nama Barang"
android:inputType="textPersonName" />
<Button
android:id="@+id/add_barang"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tambahkan Ke Keranjang" />
</LinearLayout>
Berikut ini screenshot dari design pada layout aplikasi yang akan kita buat:
5) Buka MainActivity.java, disini kita akan menambahkan Firebase Analytics dan membuat Log Events untuk menangkap peristiwa yang terjadi saat user menggunakan atau berinteraksi dengan aplikasi kita.
package cianjur.developer.net.firebaseexample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.firebase.analytics.FirebaseAnalytics;
public class firebase_core extends AppCompatActivity {
private EditText In_ID, In_nama;
private FirebaseAnalytics firebaseAnalytics;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_firebase_core);
In_ID = findViewById(R.id.item_id);
In_nama = findViewById(R.id.item_name);
Button Add_Barang = findViewById(R.id.add_barang);
//Membuat Instance FirebaseAnalytics
firebaseAnalytics = FirebaseAnalytics.getInstance(this);
//Membuat Event/Peristiwa Saat User Membuka Aplikasi
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.APP_OPEN, null);
Add_Barang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
data_barang();
Toast.makeText(getApplicationContext(), "Barang Telah Disimpan", Toast.LENGTH_SHORT).show();
}
});
}
private void data_barang (){
String id_barang = In_ID.getText().toString();
String nama_barang = In_nama.getText().toString();
//Mencatat Peristiwa/Event dengan Nama ADD_TO_CART dan Mempunyai 2 Parameter
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id_barang);
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, nama_barang);
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.ADD_TO_CART, bundle);
}
}
Penjelasan:
- Pada source code tersebut terdapat instance Firebase Analytics didalam method onCreate(), kita bisa menggunakannya untuk mencatat peristiwa pada aplikasi dengan logEvent().
- Didalam method onCreate() terdapat logEvent bernama APP_OPEN, dengan parameter null/kosong, jadi firebase akan mencatan peristiwa tersebut saat aplikasi dibuka oleh user.
- Disana kita menggunakan Bundle untuk menangkap atau menyimpan parameter.
- Saat Tombol pada aplikasi tersebut di klik, firebase akan mencatan peristiwa/event bernama ADD_TO_CART dengan parameter ITEM_ID dan ITEM_NAME.
- FirebaseAnalytics.Param: Menyediakan parameter berupa informasi yang mengkontekstualisasikan peristiwa/event, kalian dapat mengaitkan hinggal 25 Param/Parameter dalam setiap jenis peristiwa.
- FirebaseAnalytics.Event: Digunakan untuk memilih dan menentukan jenis peristiwa yang terkait dengan aplikasi yang kita buat.
Untuk melihat Referensi lebih lengkapnya mengenai jenis-jenis Event pada Analytics, klik disini, dan untuk referensi mengenai jenis-jenis Param/Parameter, silakan klik disini.
6) Coba kalian jalankan projectnya, selanjutnya isi kedua parameter tersebut yaitu ID Barang & Nama Barang, lalu klik tombol Tambahkan ke Keranjang. Jika sudah, sekarang buka situs Firebase tersebut, maka hasilnya akan terlihat seperti berikut ini:
6) Coba kalian jalankan projectnya, selanjutnya isi kedua parameter tersebut yaitu ID Barang & Nama Barang, lalu klik tombol Tambahkan ke Keranjang. Jika sudah, sekarang buka situs Firebase tersebut, maka hasilnya akan terlihat seperti berikut ini:
Statistik peristiwa pada dasbor Analytics akan selalu update secara berkala sepanjang hari/1 hari sekali, jadi saat pertama kalia kalian menjalankan aplikasi tersebut, peristiwa tidak akan langsung tercatat pada dasbor, kalian harus menunggunya keesokan harinya
Kita bisa membuat lebih dari 500 jenis peristiwa berbeda didalam aplikasi tersebut menggunakan Log Event, perlu kalian perhatikan, jika kalian membuat dua jenis/nama peristiwa yang sama tapi dengan susunan huruf kapitalnya berbeda akan menghasilkan dua peristiwa yang berbeda pula.
Pada contoh diatas kita menggunakan Parameter dan Event yang sudah disediakan oleh FirebaseAnalytics, walaupun dari keduanya sudah lengkap disediakan oleh Firebase, tapi ada kondisi dimana aplikasi kita membuatuhkan jenis peristiwa khusus yang tidak terdapat pada Firebase, kita bisa menambahkannya secara manual, seperti berikut ini:
Bundle bundle = new Bundle();
bundle.putString("Nama", nama);
bundle.putString("Sekolah", sekolah);
firebaseAnalytics.logEvent("Siswa", bundle);
Coba kalian perhatikan pada baris kode tersebut, Firebase tidak menyediakan Parameter bernama Nama & Sekolah serta Event Siswa, jadi jika menginginkan peristiwa khusus, kalian bisa membuatnya sendiri.
Menerapkan Properti Pengguna
Didalam analytics kita dapat menggunakan dan mengatur properti pengguna, kita dapat mengatur prilaku dan menganalisa berbagai segmen, dengan menggunakan properti pengguna, kita dapat memfilter banyaknya laporan yang tersedia di Google Analytics untuk firebase.
Untuk contoh penerapannya, kita akan memodifikasi project yang tadi kita buat, tambahkan barisan kode berikut ini di atas Button pada Activity_Main.xml kalian:
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="Jenis Jasa Pengiriman"
android:textSize="16sp"
android:textStyle="bold" />
<RadioGroup
android:id="@+id/pengirim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/jne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:text="JNE" />
<RadioButton
android:id="@+id/p_indonesia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:text="Pos Indonesia" />
</RadioGroup>
Jadi untuk hasil designnya akan terlihat seperti ini:
Disana kita menggunakan RadioGrup dan didalamnya terdapat dua buat radioButton, kita menambahkan menu baru berupa Janis Jasa Pengirim yang nantinya digunakan untuk properti pengguna dan mencatannya pada laporan Analytics.
Sebelum itu, terapkan terlebih dahulu Nama Properti dan Deskripsi pada Analytics kalian, perhatikan gambar berikut ini:
Isi Nama Properti pengguna serta deskripsinya, lalu klik BUAT.
Selanjutnya kita buka file MainActivity.java, Coba kalian perhatikan, ada beberapa baris kode yang harus kalian edit dan tambahkan, seperti berikut ini:
public class firebase_core extends AppCompatActivity {
// Variable Baru Yang Ditambahkan
private RadioButton JNE, p_Indnesia;
private String Nama_Jasa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_firebase_core);
//Menambahkan RadioGrup dan RadioButton kedalam Project
RadioGroup pengirim = findViewById(R.id.pengirim);
JNE = findViewById(R.id.jne);
p_Indnesia = findViewById(R.id.p_indonesia);
pengirim.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (radioGroup.getCheckedRadioButtonId()){
case R.id.jne:
Toast.makeText(getApplicationContext(), "JNE", Toast.LENGTH_SHORT).show();
Nama_Jasa = "JNE";
break;
case R.id.p_indonesia:
Toast.makeText(getApplicationContext(), "Pos Indonesia", Toast.LENGTH_SHORT).show();
Nama_Jasa = "Pos Indonesia";
break;
}
}
});
Add_Barang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
data_barang();
if(JNE.isChecked()){
firebaseAnalytics.setUserProperty("Jasa_Pengiriman", Nama_Jasa);
}else if (p_Indnesia.isChecked()){
firebaseAnalytics.setUserProperty("Jasa_Pengiriman", Nama_Jasa);
}
Toast.makeText(getApplicationContext(), "Barang Telah Disimpan", Toast.LENGTH_SHORT).show();
}
});
}
}
Disana kita menggunakan setUserProperty() untuk menambahkan nilai/value pada properti yang sudah kita buat tadi pada Analytics, saat tombol TAMBAHKAN KE KERANJANG diklik, secara otomatis value pada properti Jasa_Pengiriman akan diisi sesuai janis jasa yang disediakan yaitu JNE dan Pos Indonesia, yang tedapat pada kedua radioButton tersebut.
Perlu waktu beberapa jam agar data yang pada properti tersebut dapat dimasukkan ke dalam laporan.
Properti pengguna bisa kalian gunakan sebagai filter pada laporan yang terdapat di Analytics, Jika ada yang ingin kalian tanyakan silakan isi komentar dibawah, mohon maaf bila ada kesalahan serta kata-kata saya yang kurang jelas, terakhir dari saya.
Wassalamualaikum Warahmatullahi Wabarakatuh.