Firebase กับ HMS (Huawei Mobile Services)

จากปัญหาระหว่างประเทศที่ทำให้อุปกรณ์แอนดรอยด์ของ Huawei ไม่สามารถใช้งาน GMS ได้อีกต่อไป จึงทำให้ทาง Huawei ต้องพัฒนา HMS ขึ้นมาเพื่อใช้งานเอง ทว่าปัญหาดังกล่าวไม่ได้ส่งผลกระทบแค่บริษัท Huawei เท่านั้น แต่ยังรวมไปถึงนักพัฒนาแอนดรอยด์ทั่วโลกที่จะต้องรับมือกับอุปกรณ์แอนดรอยด์ที่อาจจะไม่มี GMS ให้ใช้งาน

เพราะในทุกวันนี้มีนักพัฒนาไม่น้อยที่ใช้ API, Tool หรือ Service ต่างๆของ Google อยู่ และอาจจะผูกขาดอยู่กับ GMS ไม่ทางตรงก็ทางอ้อม จึงทำให้นักพัฒนาต้องแก้ปัญหาเพื่อรับมือกับ HMS ไม่ว่าจะเป็น

  • ไม่รองรับอุปกรณ์แอนดรอยด์ที่ไม่มี GMS ไปเลย
  • ปิดการทำงานเฉพาะส่วนที่เรียกใช้ความสามารถของ GMS
  • เพิ่มชุดคำสั่งของ HMS Core เข้าไปแทนเพื่อทดแทนการทำงานบน GMS

และผลกระทบที่ใหญ่มากที่สุด ก็คงจะเป็นการใช้ Service ต่างๆจาก Firebase ควบคู่กับการทำงานภายในแอปนั่นเอง เพราะเมื่อ GMS ใช้งานไม่ได้ ก็ทำให้นักพัฒนาหลายๆคนกังวลว่าจะใช้งาน Firebase ไม่ได้ไปด้วย เนื่องจากมีการทำงานบางอย่างที่ต้องใช้ความสามารถของ Google Play Services

Google Play Services เป็นหัวใจสำคัญในการทำงานของ GMS ทั้งหมด และยังเปิด API บางส่วนเพื่อให้แอปภายนอกสามารถเรียกใช้งานได้อีกด้วย

ดังนั้นในบทความนี้จะมาเฉลยให้อ่านกันครับ

Service จาก Firebase ที่เรียกใช้งานจากแอปโดยตรง

เนื่องจาก FIrebase มี Service ต่างๆให้ใช้งานเยอะมาก ซึ่งครอบคลุมไปตั้งแต่ฝั่ง Mobile & Web App จนถึง Web Server ดังนั้นตัวที่ได้รับผลกระทบก็จะควรเป็นตัวที่เรียกจากแอปโดยตรงนั่นเอง

ซึ่งจะมีดังนี้

  • Firebase Analytics
  • Firebase Authentication
  • Firebase Realtime Database
  • Firebase Firestore
  • Firebase Cloud Storage
  • Firebase Performance
  • Firebase Remote Config
  • Firebase Cloud Messaging
  • Firebase Dynamic Link
  • Firebase In-App Messaging
  • Firebase Machine Learning

การทดสอบ

เจ้าของบล็อกจะเรียกใช้งานคำสั่งที่เกี่ยวข้องกับความสามารถหลักของ Service นั้นๆ เพื่อดูว่าถ้าแอปทำงานอยู่บนเครื่องที่ใช้ HMS จะสามารถทำงานได้เหมือนปกติหรือไม่ เช่น Realtime Database กับ Firestore จะทดสอบด้วยการอ่านข้อมูลที่เก็บไว้บน Firebase เป็นต้น

โดยเครื่องที่ใช้ทดสอบจะเป็น Huawei Mate 30 ที่เป็น Android 10 และใช้ HMS

ผลจากการทดสอบ

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

Service ของ Firebase ที่สามารถใช้งานได้ปกติบน HMS

  • Firebase Analytics
  • Firebase Authentication
  • Firebase Realtime Database
  • Firebase Firestore
  • Firebase Cloud Storage
  • Firebase Performance
  • Firebase Remote Config
  • Firebase In-App Messaging
  • Firebase Machine Learning

ทั้งนี้ก็เพราะว่า Service เหล่านี้เรียกใช้งานจาก Server ของ Firebase โดยตรง ไม่ได้มีการผ่าน GMS ในเครื่องแต่อย่างใด

และแน่นอนว่าสำหรับ Firebase Machine Learning จะไม่สามารถเรียกใช้งาน Model ที่อยู่ใน Google Play Services ที่เป็น GMS ได้นั่นเอง จะใช้งานได้เฉพาะ On-Device ด้วย Custom Model หรือ Cloud เท่านั้น

Service ของ Firebase ที่ใช้งานบน HMS ไม่ได้

  • Firebase Cloud Messaging
  • Firebase Dynamic Link

ซึ่งเป็นเรื่องปกติที่ Firebase Cloud Messaging จะใช้ไม่ได้ เพราะว่าเบื้องหลังในการทำงานนั้นจะมาจาก Google Play Services ทั้งหมดนั่นเอง

ส่วน Firebase Dynamic Link ก็พบว่าได้ Response Error กลับมาเลย ว่าไม่สามารถใช้งานบนเครื่องนั้นๆได้ รวมไปถึงการกด Link บน Stock Browser ที่จะ Redirect ไปที่หน้าเว็ปแทนที่จะเปิดแอปในเครื่องขึ้นมา

สรุป

ถึงแม้ว่าเครื่องที่ใช้ HMS จะทำให้นักพัฒนาต้องเปลี่ยนคำสั่งต่างๆที่เรียก GMS มารองรับกับคำสั่งของ HMS ด้วย แต่สำหรับ Firebase นั้นจะไม่ได้รับผลกระทบอะไรมากนัก เพราะว่าการทำงานส่วนใหญ่ของ Serivce ใน Firebase นั้นจะเป็นอิสระจาก Google Play Services อยู่แล้ว และ Service ที่ใช้งานไม่ได้ก็จะมี Service บน HMS Core เพื่อรองรับการใช้งานอยู่แล้วเช่นกัน