การทำให้แอพ Flutter ไม่ต้องอัพโหลดขึ้นสโตร์ใหม่ทุกครั้งเมื่อมีการเปลี่ยนแปลงโค้ด

การทำให้แอพ Flutter ไม่ต้องอัพโหลดขึ้นสโตร์ใหม่ทุกครั้งเมื่อมีการเปลี่ยนแปลงโค้ด


การทำให้แอพ 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 ได้ง่ายและรวดเร็วผ่านการแก้ไขเว็บเพจ
  • ลดต้นทุนและเวลาในการพัฒนาแอพ เพราะบางส่วนสามารถใช้โค้ดเดียวกันกับเว็บ