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

Pimpaphorn Chaichompoo Pare
20Scoops CNX
Published in
4 min readMay 21, 2017

.

ต้องขอเกริ่นก่อนนะคะ ว่าการรีวิวในครั้งนี้ จะไม่มีการรีวิว code นะ

เพราะทางผู้เขียนคิดว่า Doc ที่ทาง Firebase มีมาให้นั้น
ได้เขียนขั้นตอน อธิบายไว้อย่างละเอียดมากๆแล้ว
หรือ blog จากพี่ๆ Ascend Developers ก็ละเอียดมากพอแล้วเช่นกัน >o<
ดังนั้น การรีวิวในครั้งนี้ จะเป็นการอธิบายและแสดงผลลัพธ์ให้ดูมากกว่านะคะ

โดยเราจะทำการ review 11 features of Firebase ตามลำดับ ดังนี้

1. Realtime Database
2. Authentication
3. Cloud storage
4. Crash Reporting
5. Performance Monitoring
6. Google Analytics (ตอนที่ 2)
7. Dynamic Links
8. Invites
9. Admob
10. Cloud Messaging
11. Remote config
และ pricing

มาเริ่มกันเลย ฮึ่บ !

1. Realtime Database

ต้องบอกว่า นี่คือฟีเจอร์ยอดฮิต ของ Firebase เลย ที่ทางผู้เขียน (และใครอีกหลายๆคน) ประทับใจมากกกกกก มันคือฟีเจอร์ที่ช่วยให้พวกเรา เหล่า Dev Mobile ยืนได้ด้วยตัวเองสักที!!! ฮ่าาาาา

เจ้าตัว Firebase Realtime Database เนี่ยะ ก็คือ NoSQL cloud database ดีๆนั่นเองโดยมันได้แสดงข้อมูลในรูปแบบของ JSON เพื่อให้เราเรียกและใช้งานได้อย่างง่ายดาย และมี rule ให้เรากำหนดสิทธิการเข้าถึงด้วยนะ นี่แหนะ

โดยการใช้งานนั้น มันจะทำการ observe ค่าอยู่ตลอด
เมื่อมีค่าใหม่เข้ามา มันจะทำการ update ค่าทันที กับทุก device ที่ได้ทำการ
sync เอาไว้นั่นเอง

ความพิเศษของมันอีกหนึ่งอย่างนั้น อยู่ตรงที่ มันสามารถจัดการกับข้อมูล
ในขณะที่เครื่อง offline ได้ !! … คุณพระะ เทพเกินไปแล้ววว O.O
โดยข้อมูลจะถูกเก็บให้อัตโนมัติบน local และมันจะทำการอัพเดทขึ้นไป
บน Firebase consult ทันทีเมื่อมีการกลับมา online

…ชีวิตดีจริงๆ

เรามาดูผลลัพท์กันนะคะ

การส่งข้อมูลแบบ online
การส่งข้อมูลแบบ offline (ที่ยังเห็น simulator เป็นออนไลน์ เพราะมันอิงตามเครื่อง mac นะคะ ==”)

เป็นไงละผลลัพธ์ที่ได้มา เยี่ยมใช่ไหมละะะ
ส่วนใครสนใจที่จะพัฒนา สามารถทำตาม Doc นี้ ของ Firebase ได้เลยนะคะ
หรือใครที่อยากจะให้มันทำงานในแบบ offline
อย่าลืมใส่บรรทัดนี้ไปกันนะ
Database.database().isPersistenceEnabled = true

2. Authentication

ฟีเจอร์นี้ ก็ตามชื่อเลย Authentication เป็นฟีเจอร์ที่ช่วยในจัดการเกี่ยวกับการ
register, sign-in, forgot password และ update user profile นั่นเอง

แล้วมันมีความพิเศษอย่างไรละ …

ถ้ามองในมุม sign-up หรือ sign-in กับ social ต่างๆ ก็ยังถือว่าปกติ
แต่ที่สำคัญ ในงาน Google I/O 2017 ทีมงาน Firebase ได้ประกาศว่า
เพิ่มการเข้าสู่ระบบด้วยหมายเลขโทรศัพท์ใน Firebase Authentication !!
ครอบคุม และดีจริงๆ

ตัวอย่าง การ reset password ผ่าน console

สิ่งที่ผู้เขียนชื่นชอบอีกอย่าง คือการ reset password, forgot password, update profile นั้น โค-ตะ-ระ เยี่ยม เพราะมันจัดการให้เราทั้งหมดเลย

ตามรูปข้างบน เราจะสังเกตุเห็นว่า Firebase console จะมี function ของ Template อยู่ นั่นก็คือ function ที่สามารถให้เรา set form ของ email นั้นเอง
โดยทาง Firebase ได้แบ่ง form อีเมลไว้ทั้งหมด 4 หัวข้อ
1 Email address verification
2 Password reset
3 Email address change
4 SMS verification

เราลองมาดูตัวอย่างของการ verify Email กันนะคะ

ผู้เขียนลองเปลี่ยน username: pimpapare@gmail.com เป็น pimpapare2@gmail.com นะคะ จะเห็นได้ว่ามีการส่งอีเมลมาให้ยืนยันทันที >o<
ตัวอย่างข้อความที่ได้รับในอีเมล … เลิศศศศศศ

แต่ โลกของเรา.. ไม่ได้สวยงามเสมอไป

ขออนุญาต copy โพสของพี่ Panutat Jimmy Tejasan นะคะ

จากที่ผู้เขียนลองทดสอบดูแล้ว ค้นพบว่าปัญหานี้เกิดขึ้นจริง
เพราะทาง Firebase นั้นจะจดจำและเอาอีเมลเป็นที่ตั้ง
ดังนั้นจึงเกิดปัญหาที่ว่า ต่อให้เรา login แล้วได้คนละ cerdential ในแต่ละ social
แต่ถ้าใช้อีเมลเดียวกัน ทาง Firebase มันจะจดจำว่าเคยมีการลงทะเบียน
ด้วยอีเมลนี้อยู่แล้ว เลยทำให้ผู้ใช้ไม่สามารถ login ได้ ตามปัญหาในรูปนี้เลย.. = =

3. Cloud storage

Cloud storage มาแนว Realtime database ของ Firebase เลยนะคะ (ก็แน่สิ..)
มันก็คือพื้นที่ๆที่ให้เราสามารถ upload หรือ download file (รูปภาพ, เสียง, วิดีโอ หรือ ไฟล์อื่นๆ) ได้อย่างปลอดภัย บน Google Cloud Storage เพราะเรายังสามารถกำหนด rule ในการเข้าถึงได้อีกด้วย

นี่คือตัวอย่าง ผลลัพธ์ของการ upload รูปภาพ จาก iPhone

ซึ่งตามรูปภาพข้างบนนี้ มันจะมีรายละเอียดของรูปภาพให้เราได้ดู
เช่น ชื่อ, ขนาด, และประเภทของ image เป็นต้น
ถือว่าเป็น feature ที่ดีและสะดวกสำหรับ dev mobile อย่างเรา
แต่ไม่ถือว่าหวือหวาสำหรับผู้เขียนมากเท่าไหร่
งั้นขอจบการอธิบาย feature นี้เพียงเท่านี้ค่ะ -.-

4. Crash Reporting

Developer กับ Bug นั้นเป็นของคู่กันเสมอ

นับเป็นเรื่องที่เราหลีกหนีไม่ได้ กับการเกิด bug ซึ่งเป็นสาเหตุหลักที่ทำให้แอพ crash
แต่เราก็ยังหาเตรียมตัวป้องกันมันได้นี่หน่าาาา

เวลาที่แอพ crash แน่ๆละที่ dev เราก็อยากจะรู้ว่า
มันเกิดข้อผิดพลาดอะไรขึ้น? ที่ class ไหน? หรือ บรรทัดที่เท่าไหร่กันนะ !?
แหม่ พูดถึงแล้วก็หัวร้อนขึ้นมาทันที ฮ่าา

ซึ่งเจ้าตัว crash report สามารถช่วยเราได้ โดยทาง Firebase Crash Reporting ช่วยให้เราสามารถ ตรวจสอบข้อผิดพลาดที่เกิดขึ้นในแอพของเราผ่าน dashboard ได้ฟรี!

โถ่ ประเสริฐจริงพ่อคุณ…..

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

แต่การที่มันจะส่ง crash report ขึ้น firebase console มันจะส่งก็ต่อเมื่อ
เวลาเรา launch app อีกครั้ง เท่านั้น

และถ้าเราอยากสร้าง Event logs สำหรับการจำเพาะเจาะจงของ error ต่างๆนี้ละ
Firebase ก็มี function นี้ไว้ให้ใช้เช่นกัน

แต่ขอบอกก่อนเลยนะ จากที่ลองแล้ว crash report update ไม่ realtime นะคะ

ยืมภาพมาจาก part ของ analytics เพราะไม่ realtime เช่นกัน -.-”

และในงาน Google I/O 2017 ที่ผ่านมา
มีอัพเดทว่าทาง Firebase จะมีร่วมโปรเจ็คกันกับทาง Fabric อีกด้วยยย

ref: https://fabric.io/blog

แล้ว Fabric คืออะไร..

เจ้า Fabric นั้นก็คือ tool ตัวหนึ่งที่ยอดเยี่ยมในด้านของ Crashlytics มันประกอบไปด้วย function อีกมากมาย เช่น Issues ที่ทำให้เรารู้ที่มาของปัญหาในการ crash , Answer ที่ทำให้เราสามารถดู Real Time Active User หรือ แอพพลิเคชั่น เวอร์ชั่นไหนที่มีคนใช้เยอะที่สุด, Crash Report/Analytics ที่สามารถให้เหล่า tester มา test และ เปิด issue ของแอพเราได้ ส่วนเหล่า dev ก็ยังสามารถ ดูได้อีกด้วยว่า tester คนไหนกำลัง active อยู่ และกำลัง test อะไรของแอพเราอยู่ บลาๆ
ความสามารถเยอะมากกก

เดี๊ยวนะ กลับมา Firebase ก่อน..

จากความสามารถที่เกริ่นมานี้
ทาง Firebase เลยไม่รีรอเลย ที่จะจับมือร่วมงานกับ Fabric
จากนี้ เรามารอดูกันดีกว่าว่า บริการดีๆที่ Firebase+Fabric ทำร่วมกันนั้น
จะเทพขนาดไหนน..

5. Performance Monitoring

ฟีเจอร์น้องใหม่ล่าสุดของ Firebase พึ่งปล่อยมา ไม่กี่วันนี่เอง
( แถมยังคงเป็น BETA อยู่​ )

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

ดังนั้นทาง Firebase จึงพัฒนาฟีเจอร์นี้ ฟรี เพื่อวัตถุประสงค์ของการวัดประสิทธิภาพของแอพเรานั่นเอง แบบนี้ทาง dev หรือ manager ต่างๆ ก็สามารถดูรายงานผ่านเจ้าตัว Firebase console ได้เลยทันที

ส่วนการ Review ลำดับที่ 6 – 11
พบกันเร็วๆนี้ ใน Review 11 features of Firebase ฉบับ iOS (ตอนที่ 2) ค่ะ

--

--