Review 11 features of Firebase ฉบับ iOS (ตอนที่ 2)

.

ในตอนที่ 2 เราจะมาพูดถึง 6 features กับ 1 หัวข้อ ที่เหลือกันนะคะ


6. Google Analytics 
7. Dynamic Links
8. Invites
9. Admob
10. Cloud Messaging
11. Remote config
และ pricing

6. Google Analytics

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

โดยตัว Firebase Analytic นี้ ได้ร่วมกับตัว Notifications, Crash Reporting และ Remote Config ในการวัดผลและแสดงสถิติ ตัวอย่างเช่น

- การวัดค่าของผู้ใช้งานที่กดเปิด/ปิด/ปัดทิ้ง Notification ที่ถูกส่งจาก Firebase 
- การวัดและแสดงค่า จำนวนการ crash ของแอพ เป็นต้น

เรามาดูตัวอย่างของการแสดง Analytics ในหัวข้อ Dashboard กันดีกว่า

จะเห็นได้ว่า ผู้ใช้สามารถดูได้ว่า Active user ในแต่ละวัน/เดือน/ปี มีจำนวนเท่าไหร่
เห็นรายได้เฉลี่ยต่อ วัน/เดือน/ปี สำหรับ App purchase

เห็นเวลาของผู้ใช้งานที่ Active บนหน้าแอพของเรา
จำนวนของคนใช้งานใน แต่ละเวอร์ชันแอพ/แต่ละประเภท Device 
ภูมิประเทศ/ภาค ที่มีคนใช้งาน หรือแม้กระทั้ง เพศของผู้ใช้งาน ก็ยังมีบอก!! เป็นต้น

ยิ่งไปกว่านั้น เรายังสามารถ Custom Event ได้อีกด้วย 
โดยในตัวอย่างนี้ ผู้เขียนได้ทำปุ่ม ไว้ทั้ง 4 ปุ่ม และตั้งชื่อที่แตกต่างกันไว้ 
เช่น PressButton1, PressButton2, …3, ..4

และจะได้ผลลัพธ์ ดังนี้

เมื่อกดเข้าไปในแต่ละหัวข้อ ก็จะได้ดังภาพข้างล่างนี้
ก่อนหน้านี้ผู้เขียนได้ไปทดสอบคลิก บน simulator อีกด้วย ดังนั้น จะเห็นจำนวน Users เป็น 2 นะคะ

จะเห็นได้ว่า เราสามารถดูจำนวนการคลิกของแต่ละ event ที่เราใส่ไว้ได้ด้วย
และจะเห็นได้ว่า ที่มันนอกเหนือ จากตัวที่เรา custom มา มันยังมีบางตัวที่เป็น default ติดมาให้ เช่น

app_exception: นับจำนวน เมื่อแอพ crash หรือ throws an exception

first_open: นับจำนวน เมื่อผู้ใช้งานเปิดแอพของเราขึ้นมาในครั้งแรก หลังจากที่ install นะคะ ซึ่งจะไม่เกี่ยวข้องกับจำนวนผู้ติดตั้งแอพ

“ This event is not triggered when a user downloads the app onto a device, but instead when he or she first uses it. To see raw download numbers, look in Google Play Developer Console or in iTunesConnect. ” ref.

notification_open: นับจำนวน เมื่อผู้ใช้งานเปิด notification ที่ถูกส่งจาก Firebase Notification

และ อื่นๆอีกมากมาย

นอกเหนือจากการ Custom Event เรายังสามารถ ตั้งค่า User Properties ได้อีกด้วย มันก็คือการตั้งค่า คุณลักษณะ ของผู้ใช้งาน เช่น เพศผู้ใช้งาน, สีของดวงตา 0.0
หรือ ภาษา เป็นต้น

โดยค่า default user properties ที่ทาง Firebase เก็บไว้ให้อยู่แล้ว อย่างเช่น เวอร์ชัน OS, เวอร์ชันแอพ เป็นต้น หรือถ้าทางผู้ใช้งานอยากจะ custom 
ก็ยังสามารถทำได้สูงสุดถึง 50 properties เลยนะ

สปอร์ต…ใจดี…จริงๆ

แต่ .. ไม่ realtime นะจ๊ะ

https://www.youtube.com/watch?v=5pYdTgSkW5E

7. Dynamic Links

จะดีไหมถ้าเรามีตัวช่วย ในการโปรโมท Application ของเรา ง่ายๆ 
ผ่าน Website ด้วยการติดตั้งขั้นตอน เพียงหน้าเดียว

ในหัวข้อนี้ เราขอเสนอเจ้า Dynamic link หรือ Deep link ที่เราเคยรู้จักกันนั้นเอง

มันก็คือการที่เราสามารถโปรโมท/เชิญชวน คนอื่นๆ ให้ติดตั้งใช้งาน Application ของเราผ่าน Link เดียวบนหน้า Website ได้ง่ายๆ

เรามาดูขั้นตอนการทำงานของมันกันดีกว่า

ref:
  1. ถ้าผู้ใช้กดลิงค์ผ่าน บน Android มันจะทำการลิงค์ไปยัง Play Store ในหน้าของ Application เราเพื่อให้ติดตั้งหรือเปิดใช้งานทันที
  2. ถ้าผู้ใช้กดลิงค์ผ่าน บน iOS มันจะทำการลิงค์ไปยัง Apple Store ในหน้าของ Application เราเพื่อให้ติดตั้งหรือเปิดใช้งานทันที
  3. ถ้าผู้ใช้กดลิงค์ผ่าน บน Website/Desktop จะกลายเป็นลิงค์ธรรมดา

โดยการแยกประเภทต่างๆนี้ ทาง Dynamic Firebase จัดการให้เราเองทุกอย่าง!
ทีเหลือเราเพียงแค่ ติดตั้ง ขั้นตอน/ใส่ลิงค์/ข้อความ และ รูปภาพที่ต้องการจะให้แสดง

โดยขั้นตอนการติดตั้งจะมีทั้งหมด 5 หัวข้อ

  1. คือการที่เราจะ set link ที่จะให้ไป ในกรณีที่ ผู้ใช้เปิดผ่าน Website/Desktop
  2. คือการ set การทำงาน ในส่วนของ iOS ว่าจะให้เปิด deep link บนบราวเซอร์(Safari) หรือให้เปิดในตัวแอพที่เรากำลังเข้าอยู่ เช่นถ้าผู้ใช้งาน คลิกลิงค์จากการแชร์บนหน้า facebook มันก็จะเปิด deep link ผ่านหน้า facebook
    และ ถ้าในกรณีที่ยังไม่มีแอพ จะให้ผู้ใช้ ไปตรงไหนต่อ (ซึ่งในตัวอย่างนี้ เราจะให้เปิด App store เพื่อให้ผู้ใช้งาน install)
  3. คือการ set การทำงาน ในส่วนของ andriod ตรงนี้เช่นเดียวกันกับ iOS
  4. คือการ set UTM parameter เพื่อใช้วัดผลว่าการที่ผู้ใช้คลิกมา มาจาก source อะไร, medium อะไร หรือ campaign อะไร
  5. คือการ set หน้าตาของลิงค์ท่ีเราจะทำการเอาไปแปะไว้ 
    อย่างเช่นในตัวอย่างนี้ เรา set ว่า..

จากนั้นเราก็นำ dynamic link ที่สร้างขึ้นมา ไปใส่ยัง view ต่างๆ 
ที่เราต้องการให้เป็น action ของการแชร์ link นี้
ดังตัวอย่าง เช่น

ตัวอย่างการ Post Dynamic link ของเรา

ผลลัพท์ที่ได้คือ

ตัวอย่างการเห็น บนหน้า Website
ตัวอย่างผลลัพท์ที่ได้จากการ กดผ่าน browser มันก็จะไปยังลิงค์ที่เรา set ไว้ในหัวข้อที่ 1
ตัวอย่างผลลัพท์ที่ได้จากการ กดผ่าน iOS มันก็จะไปยังลิงค์ไปยัง Apple store

หลังจากการทำงานแล้ว เรายังสามารถดู report ได้ด้วยว่า ในแต่ละลิงค์ ถูกคลิกไปเท่าไหร่ และถูกคลิกมากในช่วงเวลาใดบ้าง หรือดู link detail กับ flow ได้อีกตังหาก
ถือว่าฟีเจอร์นี้ทำมาครอบคลุมและใช้งานง่ายจริงๆ

8. Invites

Invite ก็มาแนวการเชิญชวนเพื่อนเหมือน Dynamic link เลย 
แต่ต่างกันตรงที่ จะเป็นการ invite เพื่อน ผ่านอีเมลนั้นเอง
โดยการ set ค่าทุกอย่าง จะต้องทำผ่านแอพ เช่น การนำ dynamic link ข้อมูล
หรือ รูปไปใส่ เราอาจจะประยุกต์โดยการใช้ Remote config (อยู่ในหัวข้อที่ 11 ) มาช่วยด้วยก็ได้

เรามาดูตัวอย่างกันเลยย

Firebase จะทำการขอ เข้าถึงสู่รายชื่อในอีเมลของเรา จากนั้นเราทำการ แก้ไขหัวข้อและรายละเอียด แล้วเราก็สามารถเลือกเพื่อนที่ต้องการจะส่ง invite ไป

นี่คือผลลัพท์ของ อีเมลที่ได้รับการส่ง invite มา

มันจะทำการนำรูป icon app และ description app ที่แสดงในหน้า Apple Store มาแสดงให้ทันที

และถ้าเราทำการเปิดอีเมล ผ่าน mobile กันละ

จะเป็นการทำงานที่ผสมผสานระหว่าง invite และ dynamic link

หลังจากนี้ผู้ใช้งานก็จะสามารถเชิญชวนเพื่อนให้ใช้งานหรือติดตั้งแอพเราผ่านอีเมลได้แล้ว

9. Admob

มาถึงตัวนี้ เจ้า Admod หรือที่ใช้สร้างโฆษณาบนหน้าแอพ/เว็บ นั้นเอง 
โดยเจ้าตัว Firebase นั้น จะเป็นทางผ่านเพื่อให้ใช้งาน AdMob

ทางผ่านจริงๆ เพราะทางผู้เขียนไม่เห็นถึงความสัมพันธ์อะไรกันเลย -.-

โดยอันดับแรก เราต้องทำการ link แอพเราบน firebase ให้เข้ากับ Admob

ถ้าทำการ link แล้ว บน Firebase จะเห็นแบบนี้

จากนั้นเราสามารถทำการเลือก Format ของ AdMob ได้ตามต้องการเลย 
โดยมันจะมีด้วยกันอยู่ 4 แบบ

  • Banner แสดงแบบ 320*50
  • Interstitial แสดงแบบคั่นหน้า
  • Rewarded video แสดงเป็นวิดีโอ ที่สามารถบังคับให้ดูตามจำนวนเวลาที่ set ไว้
  • Native

โดยในตัวอย่างนี้ ผู้เขียนได้เลือกเขียนแบบ Banner และ Interstitial

ขั้นตอน

หลังจากนี้ผู้ใช้งานก็สามารถ ไปตั้งค่า Ads ได้บน AdMod

10. Cloud Messaging

เห้อ ฟีเจอร์ที่ชอบมาอีกแล้ว..

Firebase Cloud Messaging (FCM) หรือชื่อเดิมของมันคือ 
Google Cloud Messaging (GCM) นั้นเอง

มันคือบริการเกี่ยวกับการ แจ้งเตือนข้อความ (Push Notification) 
โดยทาง Firebase ได้ทำออกมา ให้รองรับกับทุก plateform (iOS,Andriod, และ Web) ที่สำคัญที่สุด คือมัน ฟรี !

เทพแล้วยังใจดีอีกตังหาก..

ตัวอย่าง Firebase console

โดยเจ้าตัวนี้ มีการให้ใส่รายละเอียดหัวข้อ Noti และเลือกเวลาว่าจะส่งทันที หรือ

ตัวอย่างของการเลือก Send Later

เลือกช่วงเวลาที่จะต้องการส่ง

แล้วความสามารถของเจ้าตัว Firebase ยังให้เราเลือก Target การส่งได้เป็น 3 แบบ อีกด้วย

  1. User segment คือการส่งให้ทุก Device ที่มีแอพนั้นๆ
  2. Topic คือเราสามารถทำการ subscribe topic ให้แต่ละ Device ได้ ขั้นตอนมีดังนี้
  3. Single device คือการที่เราสามารถเจาะจง Device ที่อยากจะทำการทดสอบส่งข้อความให้ อ้างอิงโดยใช้ device token นั้นเอง

ยิ่งไปกว่านั้น

ยังมีหัวข้อ Advanced options ให้เราอีกตังหาก แหม่ๆ
มันก็คือการที่เราจะสามารถ custom key ที่ส่งไปกับ notification ได้ เช่น
“attachement-url” ที่ใช้สำหรับการส่ง รูปภาพ

หรือจริงๆ จะเป็น key อะไรก็ได้ ขึ้นอยู่กับเราจะตั้งรับเป็น key อะไรบ้าง

  • Priority = Hight สำหรับ iOS ก็จะคือการทดสอบให้ส่ง Notification
    บน Background mode นั้นเอง
  • Sound ก็คือให้มีเสียงหรือไม่
  • Expires ก็คือเวลาที่หมดอายุนั้นเอง คือถ้าผู้ใช้งาน ไม่ได้ทำการออนไลน์ มันก็จะทำการเก็บข้อความไว้ และถ้าผู้ใช้งานออนไลน์เมื่อไหร่ มันจะทำการส่ง notification ให้ทันที นี่คืออายุของตรงนี้นี่เอง

ดังตัวอย่าง

11. Remote config

เคยแปลกใจไหม ว่าทำไม Application ดังๆ มักจะมีการอัพเดทให้เข้ากับสถานการณ์ หรือ event ได้ทันเวลาอยู่ตลอดๆ 
ยิ่งถ้าเป็นแอพ iOS นะ ทำกันได้ไงเนี้ยะะ

(เราต่างรู้ว่า iOS เวลาในการส่ง Review แอพนั้น แล้วแต่อารมณ์ของทาง Apple มาก บางวันก็เร็วจนใจหาย (1–2วัน)บางวันก็แหม่ ล่อไปเป็น 5 วัน บ่นๆๆ)

จะดีไหมถ้าเรามีตัวช่วยในเรื่องนี้ ก็คือ เจ้าตัว Remote Config นั้นเอง

โดยเจ้าตัวนี้มันยินยอมให้เรา สร้าง Key ที่จะใช้คุยกับแอพ โดยทางแอพจะทำหน้าที่ก็คือ ดักรับ Key นี้ และนำค่าของ key นี้ไปใช้ เมื่อมีการเปลี่ยนแปลง ดังตัวอย่าง

(ขออนุญาตอัดวิดีโอและเร่งความเร็วช่วย เพื่อที่จะได้ดูตัวอย่างกันนะคะ)

จะเห็นได้ว่า เมื่อมีการอัพเดทค่าผ่าน Firebase Console ในตัวแอพพลิเคชั่น จะได้รับการอัพเดทค่าด้วยเช่น เมื่อมีการเรียกผ่านในส่วนที่เราเขียนรับค่าไว้

หลังจากนี้เราก็สามารถประยุกต์ เพื่อนำไปใช้ในการอัพเดทธีม ของแอพพลิเคชั่นเรา ให้ทันกับสถานการณ์ต่างๆได้

Pricing

สุดท้ายนี้ ของฟรี และ ไม่มีลิมิต ไม่มีในโลกจ้าาาา
โดยฟีเจอร์ที่มีข้อจำกัดและราคา ได้แก่

และสามารถดูรายละเอียดเพิ่มเติม ได้ ที่นี่

สรุปผลที่ได้

โดยส่วนตัวของผู้เขียนนั้น รู้สึกประทับใจเป็นอย่างมาก 
จากที่ได้ลองใช้ในหลายๆฟีเจอร์ ที่ทาง Firebase นั้นมีให้

ต้องยอมรับก่อนว่า แต่เดิมผู้เขียนนั้น จะไม่ถนัดในเรื่องของ Back-end หรือ DB มากมายนัก จึงมักทำให้มีปัญหาบ้าง เวลาที่ต้องทำ Application และ DB เอง

แต่หลังจากรู้จัก Firebase แล้ว ปัญหาเหล่านี้ทั้งหมดก็หมดไป 
แถมเจ้าตัว Firebase ยังมีลูกเล่นให้ลองเล่นอีกมากมาย แหนะ

เรียกได้ว่า เจ้าตัว Firebase เกิดมาเพื่อเป็นผู้ให้บริการ Backend ครบวงจร 
สำหรับนักพัฒนาแอพนั้นเอง