การทำให้แอพ Flutter ไม่ต้องอัพโหลดขึ้นสโตร์ใหม่ทุกครั้งเมื่อมีการเปลี่ยนแปลงโค้ดสามารถทำได้โดยการใช้ Dynamic Updates หรือ Over-the-Air (OTA) Updates ซึ่งสามารถทำได้ผ่านหลายวิธีดังนี้
1. CodePush
คำอธิบาย:
CodePush เป็นบริการจาก Microsoft App Center ที่ช่วยให้นักพัฒนาสามารถส่งอัพเดตแอพแบบ over-the-air (OTA) ไปยังผู้ใช้งานได้โดยตรง โดยไม่จำเป็นต้องผ่านการอัปเดตผ่านสโตร์ เช่น Google Play หรือ App Store ซึ่งเหมาะกับการอัปเดตที่ไม่เกี่ยวข้องกับ native code เช่น การแก้ไข JavaScript, CSS, หรือข้อมูลใน React Native หรือการปรับปรุงข้อมูล static ต่างๆ ในแอพ Flutter
ขั้นตอนการใช้งาน:
- สร้าง Native Bridge ระหว่าง Flutter และ CodePush: ในการใช้งาน CodePush กับแอพ Flutter จำเป็นต้องสร้าง bridge ระหว่าง native code (เช่น Java/Kotlin สำหรับ Android หรือ Objective-C/Swift สำหรับ iOS) กับแพ็คเกจ Flutter CodePush ซึ่งจะเป็นตัวกลางในการสื่อสารระหว่าง CodePush และแอพ Flutter
- ใช้แพ็คเกจ Flutter CodePush เพื่อทำ OTA updates: หลังจากที่ทำการสร้าง bridge แล้ว นักพัฒนาจะใช้แพ็คเกจ Flutter CodePush เพื่อรับและติดตั้งอัพเดตใหม่ในแอพ ตัวแพ็คเกจจะช่วยให้แอพดาวน์โหลดและติดตั้งอัพเดตแบบ OTA โดยไม่ต้องส่งผ่านสโตร์
ข้อดี:
- ไม่ต้องรอการอนุมัติจากสโตร์ ซึ่งอาจใช้เวลานาน
- อัปเดตแอพที่ทำงานบนฟรอนต์เอนด์ได้ทันที เช่น การแก้ไข UI, การเพิ่มฟีเจอร์ใหม่ ๆ
2. Firebase Remote Config
คำอธิบาย:
Firebase Remote Config เป็นฟีเจอร์ใน Firebase ที่ช่วยให้คุณสามารถเปลี่ยนแปลงค่าคอนฟิกต่าง ๆ ภายในแอพ เช่น การเปิด/ปิดฟีเจอร์ การปรับแต่ง UI หรือการเปลี่ยนแปลงข้อความแบบเรียลไทม์ โดยไม่จำเป็นต้องอัปเดตแอพผ่านสโตร์ ผู้ใช้งานจะได้รับการเปลี่ยนแปลงทันทีเมื่อเปิดแอพและเชื่อมต่ออินเทอร์เน็ต
ขั้นตอนการใช้งาน:
- ตั้งค่าตัวแปรหรือการตั้งค่าใน Firebase console: เริ่มต้นด้วยการกำหนดตัวแปรและการตั้งค่าที่ต้องการใน Firebase Remote Config บน Firebase Console เช่น การตั้งค่าสี การเปิด/ปิดฟีเจอร์ เป็นต้น
- ดาวน์โหลดการตั้งค่าผ่าน Firebase SDK ในแอพ: ในแอพของคุณสามารถเรียกใช้ Firebase SDK เพื่อดาวน์โหลดค่าคอนฟิกใหม่จากเซิร์ฟเวอร์ จากนั้นค่าเหล่านั้นจะถูกใช้เพื่อควบคุมแอพ การอัปเดตจะเกิดขึ้นตามเวลาที่กำหนดหรือเมื่อแอพทำการรีเฟรชค่า
ข้อดี:
- สามารถเปลี่ยนแปลงฟีเจอร์หรือการตั้งค่าแอพได้แบบเรียลไทม์ โดยไม่ต้องรอผู้ใช้ทำการอัปเดตผ่านสโตร์
- สามารถแบ่งกลุ่มผู้ใช้ตามเงื่อนไขต่าง ๆ (เช่น ประเทศ หรือ เวอร์ชันแอพ) แล้วเปลี่ยนคอนฟิกเฉพาะกลุ่มได้
3. Server-Driven UI
คำอธิบาย:
Server-Driven UI คือแนวคิดที่ให้เซิร์ฟเวอร์ควบคุมและส่งข้อมูลหรือฟังก์ชัน UI ให้กับแอพฝั่งไคลเอนต์ โดยไคลเอนต์ไม่จำเป็นต้องมีโค้ดที่คงที่ แต่จะรับข้อมูลจากเซิร์ฟเวอร์เพื่อสร้างหรือปรับปรุง UI แบบเรียลไทม์ วิธีนี้ทำให้คุณสามารถเปลี่ยนแปลง UI หรือฟังก์ชันบางส่วนของแอพได้ทันทีโดยไม่ต้องทำการอัปเดตแอพใหม่
ขั้นตอนการใช้งาน:
- ออกแบบ UI และฟังก์ชันให้ควบคุมผ่านเซิร์ฟเวอร์: นักพัฒนาจะต้องออกแบบแอพให้สามารถสร้างหรือปรับปรุง UI ตามข้อมูลที่ได้รับจากเซิร์ฟเวอร์ เช่น การสร้าง layout, การจัดการปุ่ม หรือการเปลี่ยนฟีเจอร์ต่างๆ
- ส่งคำสั่งจากเซิร์ฟเวอร์เพื่อปรับปรุงแอพ: เซิร์ฟเวอร์จะส่งคำสั่งที่ประกอบด้วยข้อมูล UI ไปยังไคลเอนต์ แอพจะสร้างหรือปรับปรุง UI ตามข้อมูลที่ได้รับ การเปลี่ยนแปลงนี้สามารถเกิดขึ้นได้โดยไม่ต้องอัปเดตแอพ
ข้อดี:
- สามารถอัปเดต UI ได้โดยไม่ต้องส่งแอพใหม่ให้ผู้ใช้
- ช่วยให้สามารถปรับแต่งแอพได้ตามกลุ่มผู้ใช้ที่แตกต่างกัน (personalization)
4. WebViews หรือ Hybrid Approach
คำอธิบาย:
การใช้ WebView หรือ Hybrid Approach ในแอพมือถือคือการโหลดเนื้อหาบางส่วนของแอพจากเว็บเซิร์ฟเวอร์ผ่าน WebView ทำให้คุณสามารถอัปเดตส่วนต่าง ๆ ของแอพได้ผ่านการเปลี่ยนแปลงเนื้อหาบนเว็บแทนการอัปเดตทั้งแอพในสโตร์ การผสมผสานระหว่างโค้ด native และ web code ช่วยให้สามารถใช้ประโยชน์จากทั้งสองแบบได้
ขั้นตอนการใช้งาน:
- ใช้ WebView เพื่อโหลดส่วนของแอพจากเว็บ: WebView คือเครื่องมือในแอพมือถือที่ช่วยให้สามารถโหลดเว็บเพจภายในแอพได้ นักพัฒนาสามารถพัฒนา UI บางส่วนของแอพในรูปแบบเว็บและแสดงผ่าน WebView ซึ่งจะช่วยลดการใช้โค้ด native และทำให้อัปเดตได้ง่ายขึ้นผ่านการปรับเปลี่ยนหน้าเว็บ
- ผสมผสานระหว่าง native code และ web code: Hybrid Approach คือการผสมผสานระหว่างการพัฒนาแอพในแบบ native และ web (เช่น HTML5, CSS, JavaScript) ทำให้สามารถใช้งานฟังก์ชัน native ของมือถือได้พร้อมกับการอัปเดตเนื้อหาที่รวดเร็วผ่านเว็บ
ข้อดี:
- อัปเดตเนื้อหาหรือ UI ได้ง่ายและรวดเร็วผ่านการแก้ไขเว็บเพจ
- ลดต้นทุนและเวลาในการพัฒนาแอพ เพราะบางส่วนสามารถใช้โค้ดเดียวกันกับเว็บ