รู้จัก Google Analytics for Firebase ตั้งแต่ Zero จนเป็น Hero

Jirawatee
Firebase Thailand
4 min readJul 7, 2016

--

Google Analytics for Firebase เป็นบริการที่เก็บข้อมูลสถิติการใช้งานของแอพพลิเคชัน ที่เจาะลึกถึงการมีส่วนร่วมของผู้ใช้ โดยสามารถกำหนดและคัดกรองกลุ่มผู้ใช้งานได้หลากหลายรูปแบบ ทำให้สามารถเข้าใจพฤติกรรมของผู้ใช้กับแอพพลิเคชัน และนำมาต่อยอดได้ แบบฟรีๆ ทั้ง Android และ iOS

Google Analytics for Firebase ก็ยังผนวกไปกับ features ต่างๆใน Firebase ทั้ง Crash Reporting, Remote Config และ Notifications ตัวอย่างคือ การเก็บข้อมูลอัตโนมัติจาก Firebase Notifications และนำมาแสดงรายงานถึงผลที่เกิดขึ้นจาก notification ที่เราส่งไป เช่น การรับ, การเปิด และการปัดทิ้ง เป็นต้น

วิดีโอแนะนำการทำงานของ Firebase Analytics

ในการพัฒนา Google Analytics for Firebase จะขอแยกออกเป็น 3 parts ดังนี้

  1. การ Set up Firebase และ Analytics SDK
  2. การ Log Events
  3. การตั้งค่า User Properties

พร้อมแล้วก็เปิด Android Studio ขึ้นมา โดยจะสร้างโปรเจคใหม่ หรือจะใช้โปรเจคเดิมก็ได้

Part 1 การ Set up Firebase และ Analytics SDK

ถ้าสร้างโปรเจคใหม่ ให้ไปดูการ Set up Firebase ที่บทความนี้ก่อน

เมื่อ Set up Firebase เรียบร้อยแล้ว ก็ให้เพิ่ม Analytics SDK ใน build.gradle ของ app-level แล้วกด Sync ก็เป็นอันจบส่วนที่ 1 ละ

dependencies {
compile 'com.google.firebase:firebase-core:11.8.0'
}

Part 2 การ Log Events

คือการ Log พฤติกรรมหรือสิ่งที่เกิดขึ้นภายในแอพ เช่น action ต่างๆจากผู้ใช้, Event จากระบบ รวมถึง errors ต่างๆที่เกิดขึ้น

โดย Google Analytics for Firebase จะมีการเก็บค่า Event บางประเภทแบบอัตโนมัติในแอพอยู่แล้ว ซึ่งเราไม่ต้องเขียน Code เพิ่มเติม เช่น การเปิดแอพครั้งแรก, การอัพเดทแอพ, การถอนแอพออก, การรับ notification, การเปิด notification เป็นต้น สามารถดูรายละเอียดเพิ่มเติมได้ที่ https://support.google.com/firebase/answer/6317485?hl=en&ref_topic=6317484

แต่หากแอพเราต้องการเก็บ Event เพิ่ม ก็สามารถเก็บเพิ่มได้สูงสุด 500 ประเภทต่อ 1 แอพพลิเคชัน (มาถึงจุดนี้ ไงก็เพิ่มชัวร์ จริงมะ)

งั้นเรามาเริ่มต้นด้วยการประกาศตัวแปร FirebaseAnalytics กันก่อน

private FirebaseAnalytics mFirebaseAnalytics;

ตามด้วยการประกาศรับค่า Instance ของ FirebaseAnalytics

mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);

เมื่อรับค่ามาเรียบร้อย คราวนี้ก็ลองมาดูวิธีการ Log events หรือเหตุการณ์ต่างๆภายในแอพกัน โดยการ Log event นั้นสามารถที่จะส่งค่า parameter เพื่อระบุถึงรายละเอียดใน event นั้นๆเข้าไปด้วยได้ ซึ่ง events และ parameters ทาง Firebase ก็มีเตรียมให้เราใช้มากมาย หรือจะกำหนดเองทั้งหมด หรือผสมกันก็ได้เช่น

ตัวอย่างการ log เมื่อผู้ใช้คลิกที่รูป โดยใช้ตัวแปร event และ parameters ที่ Firebase เตรียมไว้ให้

Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "12345");
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "Nougat");
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "image");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);

ประเภทของ Event และ Parameter ที่ Firebase เตรียมไว้ มีเยอะมาก และค่อนข้างครอบคลุมทุกเหตุการณ์ที่จะเกิดกับแอพพลิเคชันเราอยู่ละ

ดูประเภทของ Events ที่ Firebase ได้กำหนดไว้ให้เพิ่มเติมที่ https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Event

ดู Parameters ที่ Firebase ได้กำหนดไว้ให้เพิ่มเติมที่ https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Param

ตัวอย่างการ log เมื่อผู้ใช้คลิกที่แชร์ข้อมูลไปยัง Social Network ด้วยการกำหนด event และ parameters เอง

Bundle params = new Bundle();
params.putString("image_name", name);
params.putString("full_text", text);
mFirebaseAnalytics.logEvent("share_image", params);

Parameters ที่เรากำหนดเองจะไม่แสดงค่าในรายงาน แต่มันจะกลายเป็นตัว filter ประเภทของ Audienceได้

Part 3 การตั้งค่า User Properties

คือการตั้งค่าคุณลักษณะ หรือ คุณสมบัติ ของผู้ใช้ที่เรานิยามและให้ความหมายได้ เพื่อใช้ในการ filter ผู้ใช้ได้ เช่น ภาษาของผู้ใช้, เพศของผู้ใช้, สีดวงตา, อาหารที่ชอบ เป็นต้น

โดย Google Analytics for Firebase จะมีการเก็บค่า User Properties แบบอัตโนมัติอยู่แล้ว ซึ่งเราไม่ต้องเขียน Code เพิ่มเติม เช่น เวอร์ชันของแอพ, เวอร์ชันของ OS, เพศของผู้ใช้, อายุของผู้ใช้ เป็นต้น สามารถดูรายละเอียดเพิ่มเติมที่ https://support.google.com/firebase/answer/6317486?hl=en&ref_topic=6317484

แต่หากแอพเราต้องการจะเก็บ User Properties เพิ่ม ก็สามารถเก็บเพิ่มได้สูงสุด 25 คุณสมบัติ (Filter กันมันส์หยด ติ๋ง ติ๋ง ติ๋ง)

มา เรามาเริ่มกัน โดยถ้ายังไม่ได้ประกาศตัวแปร ก็ประกาศซะเหมือนตอน Event เป๊ะ

private FirebaseAnalytics mFirebaseAnalytics;

ตามด้วยการประกาศรับค่า Instance ของ FirebaseAnalytics

mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);

คราวนี้ก็มาดูวิธีการตั้งค่า เพื่อจะได้เอาข้อมูลไป filter วิเคราะห์กลุ่มผู้ใช้ ให้ได้ตรงกลุ่มเป้าหมายมากขึ้น

  1. ไปที่ Firebase Console เลือกเมนู Analytics ทางด้านซ้าย แล้วให้คลิ๊ก Tab ชื่อ USER PROPERTIES
หน้า User Properties ในเมนู Analytics

2. เมื่อเข้าสู่หน้า User Properties ให้กดปุ่มสีฟ้า NEW USER PROPERTY กรอกชื่อและคำอธิบาย แล้วกด CREATE

Create an user property

3. เขียน Code ตั้งค่า User Property นี้ ในกรณีที่เรารู้ละ ว่าผู้ใช้คนนี้ชอบทานอะไรเป็นประจำ

mFirebaseAnalytics.setUserProperty("favorite_food", "Noodle");

Source code ทั้งหมดของผมก็สั๊นสั้น ประมาณนี้

เสร็จละ ง่ายช่ายมะ ที่เหลือก็ไปนอนตีลังกา รอเวลาให้ Firebase Console อัพเดทละ

มาทำความรู้จักเมนู Analytics ใน Firebase Console กันสักหน่อย

เมื่อเวลาได้ล่วงเลยมา 1 วัน ก็มีสัญญาณดีเมื่อสถิติแวะเข้ามาทักทาย…
จากตัวอย่างภาพจะเห็นตัวเลข 82 ซึ่งเย้ายวนชวนคลิก ก็ให้คลิกเบาๆ

เมื่อคลิกแล้ว เราก็จะเข้าสู่หน้า DASHBOARD แบบนี้

ซึ่งข้อมูลในหน้านี้ตัว Firebase Analytics วิเคราะห์ข้อมูลออกให้น่าสนใจหลายมิติ

ตัวอย่าง Demographics ใน Dashboard ของ Firebase Analytics

สามารถดูรายละเอียดเพิ่มเติมแต่ละหัวข้อใน Dashboard ได้ที่ https://support.google.com/firebase/answer/6317517?hl=en&ref_topic=6317489

Tab ถัดมาคือ EVENTS เป็นหน้าแสดงค่า Event ทั้งแบบอัตโนมัติและที่เราส่งเข้าไป

Events tab in Firebase Analytics

โดยคุณสามารถเจาะลึกลงไปดูข้อมูล users แต่ละกลุ่มในแต่ละ Event ได้อีก เช่นดูผ่าน Parameter ที่ส่งมา และ filter จาก Users Properties ต่างๆร่วมด้วยได้

ตัวอย่างใช้ User Property ชื่อ favorite_food เป็นตัว filter ผู้ใช้ที่ชอบกินซุป

ส่วน Tab อื่นๆก็ไปศึกษาเพิ่มเติมใน Firebase Console นะครับ

รายการต่อไป…ของฝากนักกอล์ฟ

  • ชื่อ Event และ User Properties เป็น case-sensitive พึงระวังเพราะมันต่างกันนะ
  • สามารถระบุ Parameter ได้สูงสุด 25 ตัวต่อ 1 ประเภทของ Event
  • การกำหนด Event เอง สามารถระบุตัวอักษร, ตัวเลข และ _ รวมกันได้ไม่เกิน 40 characters โดยจะต้องขึ้นต้นด้วยตัวอักษรก่อน และไม่สามารถขึ้นต้นด้วย firebase_, google_, ga_ นอกจากนี้ยังมีคำสงวนสำหรับประเภทของ Event ดังนี้
app_clear_data
app_uninstall
app_update
error
first_open
in_app_purchase
notification_dismiss
notification_foreground
notification_open
notification_receive
os_update
session_start
user_engagement
  • การกำหนด Parameter เอง สามารถระบุตัวอักษร, ตัวเลข และ _ รวมกันได้ไม่เกิน 40 characters โดยจะต้องขึ้นต้นด้วยตัวอักษรก่อน และไม่สามารถขึ้นต้นด้วย firebase_, google_, ga_ ส่วน value ก็ต้องไม่เกิน 100 characters
  • ข้อมูลทั้งหมดจะไม่ได้แสดงแบบ Realtime โดยระบบจะใช้เวลาอัพเดทประมาณ 1 วัน จึงจะแสดงผลใน Firebase Console (ต้องอดใจรอนิสนึง)
  • สามารถตรวจสอบการ Log ของ event ได้ทันทีว่าถูกส่งไปถูกต้องหรือไม่ ในขณะที่ Run แอพอยู่ โดยจะต้องพิมพ์คำสั่งเหล่านี้ใน terminal ของ Android Studio แล้วเราก็จะสามารถเห็น log ใน logcat ได้
adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC
ตัวอย่าง Log ที่ได้จากการส่ง Event

Google Analytics for Firebase มันเกิดมาเพื่อเก็บและวิเคราะห์สถิติสำหรับแอพโดยแท้จริง ถ้าเปรียบเทียบกับ Google Analytics ผมว่า Google Analytics for Firebase มันยืดหยุ่น ทั้งการเก็บค่าแบบ automatic ที่เก็บค่าหลายอย่างที่เราอยากรู้จากแอพมานานแสนนาน และยังสามารถ Custom แบบมีมิติได้มากกว่า

จะติดอยู่แค่เรื่องเดียว คืออยากให้มีเมนูแบบ Realtime ด้วย เวลาไป Demo แบบ Realtimeให้คนที่ไม่ใช่สาย Tech ดู จะต้องดูผ่าน logcat ซึ่งมันดู Geek ไปหน่อย

บทความเรื่อง Google Analytics for Firebase นี้ก็ถือเป็นบทความที่สองของ Firebase The Series ละ เนื้อหาบทความนี้ก็ยังมีความพยายามดำดิ่งของผู้เขียนเหมือนเคย หวังว่าเมื่อนักพัฒนาได้อ่านแล้ว จะช่วยให้เข้าใจ และสามารถพัฒนา Google Analytics for Firebaseให้เกิดประโยชน์กับแอพของคุณได้นะครับ พบกันใหม่บทความหน้า…สำหรับค่ำคืนนี้ ขอตัวลาไปนอนก่อน ราตรีสวัสดิ์ พี่น้องชาวไทย

--

--

Jirawatee
Firebase Thailand

Technology Evangelist at LINE Thailand / Google Developer Expert in Firebase