[Firebase] มารู้จักกับ App Distribution กัน เครื่องมือใหม่สำหรับนักพัฒนาแอปที่พลาดไม่ได้ [iOS]

Kajornsak P.
Firebase Thailand
Published in
4 min readSep 26, 2019

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

ย้อนกลับไปเมื่อปี 2014 ทางทีม Crashlytics (ก่อนที่จะมี Fabric นิดนึง) ได้ทำการเปิดตัว product ใหม่ขึ้นมาชื่อว่า Beta เพื่อใช้ในการเผยแพร่แอปของเราลงสู่ device ต่างๆนั่นเอง เรียกว่ายกระดับวงการ Mobile development ไปอีกขั้นเลยทีเดียว

สำหรับใครที่ไม่รู้จัก Beta หรือยังไม่มีโอกาสได้ลองใช้ ขอสรุปสั้นๆง่ายๆก็คือ คุณสามารถอัพโหลด build artifacts (IPA — iOS, APK — Android) ขึ้นไปที่เจ้าตัว Beta จากนั้นเพียงแค่หยิบเครื่องเทสขึ้นมา แล้วสามารถกดลง Build นั้นๆเข้าไปทีเครื่องได้เลย โดยไม่ต้องนำไปเสียบคอมของ developer เพื่อ build ใหม่ให้เสียเวลานั่นเองง

แต่แล้ว เรื่องราวก็เปลี่ยนไป เมื่อ Google ทำการซื้อ Crashlytics และ Fabric ไปในปี 2017 นั่นเอง เพื่อไปเสริมพลังให้กับ Firebase ให้แข็งแกร่งยิ่งขึ้น!! โดยที่ Crashlytics ถูกย้ายมาก่อนในชื่อ Firebase Crashlytics นั่นเอง แต่เราก็ยังคงต้องใช้ Beta ใน Fabric อยู่ต่อ เพราะยังไม่ถึงเวลาย้ายซะที

จนกระทั่งวันนี้!!! ทางทีม Firebase ได้เปิดตัว Product ใหม่สดๆร้อนๆ นั่นก็คือ Firebase App Distribution นั่นเองงง ซึ่งก็คือเจ้า Beta โฉมใหม่ ที่สามารถใช้งานผ่าน Firebase Console ได้อย่างง่ายๆเลย

ไอค่อนใหม่บ่งบอกถึงการ deliver แอปที่รวดเร็วทันใจ~

ก่อนอื่น อย่าลืมติดตั้ง Firebase ลงในโปรเจคของเราด้วยนะ ไม่ว่าจะเป็น Android หรือ iOS ไม่งั้นเดี๋ยวจะใช้ไม่ได้นะ!

มาลองใช้งานกันดีกว่า!

โดยการใช้งานเจ้า Firebase App Distribution ของ iOS จะมี 3 วิธีด้วยกัน

  1. การใช้งานผ่าน Firebase Console
  2. การใช้งานผ่าน Firebase CLI
  3. การใช้งานผ่าน Fastlane

การใช้งานผ่าน Firebase Console

ต้องมี Application อยู่ใน Firebase Project ก่อนนะ

เมื่อเข้ามาที่ Console ที่เราคุ้นเคยกัน ในหมวด Quality ก็จะพบกับเจ้า App Distribution ซึ่งหน้าตาดูใช้งานง่ายมากๆเลยทีเดียว

ซึ่งถ้าซูมดูชัดๆ จะเห็นว่ามี 3 Tab อยู่ข้างใน โดยเราจะมาดูที่ Testers กันก่อน

Testers

Testers ก็คือกลุ่มคนที่สามารถโหลดใช้งาน Application ของเราผ่าน App Distribution ได้นั่นเอง โดยเราสามารถจัดกลุ่มของ Testers ได้ตามใจชอบเลย (อาจจะแบ่งเป็น QA, PO, Manager ก็ได้ แล้วแต่ที่ทีมจะสะดวกเลยก็ว่าได้)

โดยการเพิ่ม Tester เข้ามานั้นทำได้ง่ายๆ เพียงแค่พิมพ์ e-mail ที่จะส่ง invitation ลงไป แล้วเดี๋ยวที่เหลือ Firebase ก็จะจัดการให้เอง!

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

วิธีเผยแพร่แอปให้กับ Testers

จากที่ได้บอกไว้ข้างต้นคือ เราสามารถใช้งาน App Distribution ได้หลายช่องทาง โดยเราจะมาดูแต่ละวิธีกัน

Firebase Console (iOS)

สำหรับ iOS Application เมื่อเข้ามาจะเจอหน้าตาประมาณนี้แหละ และเมื่อกลับมาดูที่ Tab แรกใน Console ของ App Distribution จะเห็นว่าวิธีใช้งานมีเพียงแค่ขั้นตอนเดียวง่ายๆเลย คือการลากเอาไฟล์ ipa มาใส่นั่นเอง (หลายคนอาจสงสัยว่า ไฟล์ ipa เอามาจากไหน)

ตอนที่เรา Archive แอปของเรา เมื่อทำการ Distribute App ให้เลือกแบบที่เป็น Ad Hoc, Enterprise, Development แทนที่จะเป็น App Store (เลือกอันที่ตรงกับ profile เรานะ) จากนั้นก็ทำการ signing ต่างๆให้เรียบร้อย

พอ export เสร็จปุ๊ป ก็จะเจอไฟล์ ipa นั่นเองง

จากนั้นก็…..เดาได้ไม่ยาก คือลากมาโยนใน Console ได้เลยย

จากนั้นก็เลือก Testers จะเป็นรายบุคคลหรือ Group ก็ได้ จัดการใส่ release note ให้เรียบร้อย แล้วก็…. ปล่อยของได้~

กดนิดๆหน่อยๆ แล้วก็เตรียมรอโหลดแอปในเครื่องเทสได้เลย

จากนั้นเหล่า Testers ก็จะได้รับอีเมลแจ้งเตือนว่า มีแอปเวอร์ชั่นใหม่ถูกเผยแพร่แล้วนะ เข้าไปทดลองกันได้เลย

ถ้ายังไม่เคยลงทะเบียน device มาก่อนก็จะมีขั้นตอนเพิ่มเล็กน้อย

จากนั้นก็ทำตามขั้นตอนในอีเมลได้เลย เพื่อทำการลงทะเบียน device เราเข้ากับ Firebase นั่นเอง

สุดท้ายแล้วก็จะเห็นไอค่อนแอปนี้โผล่ขึ้นมา
เมื่อเปิดเจ้าแอป App Distribution ก็จะเป็นหน้าเว็บให้โหลดแอปของเรานั่นเอง~

จากนั้นก็ใช้งานแอปเราได้ปกติ เหมือนว่าเพิ่ง build จาก Xcode มาสดๆร้อนๆ

การใช้งานผ่าน Firebase CLI

นอกจากการใช้ง่านผ่าน Console แล้ว ก็ยังสามารถเผยแพร่แอปผ่าน Firebase CLI ได้เช่นกัน เหมาะสำหรับบน CI ที่มี artifact เป็นไฟล์ ipa แล้วนั่นเอง

ขั้นตอนแรกเลยคือต้องมี Firebase CLI ก่อนนั่นเอง จะติดตั้งด้วยวิธีไหนก็ตามแต่ผู้อ่านจะสะดวกเลย

จากนั้นเราก็จะต้องมี Firebase App ID เพื่อที่จะบอกให้ Firebase รู้นั่นเอง ว่าจะทำการเผยแพร่แอปเราไปที่โปรเจคไหน แอปไหน สามารถเข้าไปดูได้ที่หน้า General Settings ของแอปนั้นๆเลย

ทำการ copy เก็บไว้ได้เลยย

จากนั้นลองมาดูกันว่า CLI นั้นใช้งานยังไง

จะเห็นว่าสิ่งสำคัญหลักๆที่ต้องมีก็คือ

  1. ตัว distribution-file หรือก็คือตัว ipa ของเรา
  2. app_id ที่จะเผยแพร่แอปของเรา
  3. release-notes ว่าอัพเดตเวอร์ชั่นนี้มีอะไร
  4. testers/groups ที่เราจะ release ให้ โดยจะเป็นชื่อ หรือดึงจากไฟล์ก็ได้เช่นกัน
firebase appdistribution:distribute yourfile.ipa --app <app_id> --release-notes "<release-notes>" --groups "<group-name>"

อย่างในเคสนี้ ผมส่งไปที่ Testers group ที่ชื่อ QA (ตั้งค่าได้ใน Console) เหล่าอีเมลทีอยู่ใน group นี้ก็จะได้รับแอปพร้อมๆกัน

จากนั้นก็รอไม่กี่สิบวินาที
เวอร์ชั่นใหม่มาเรียบร้อย!!

เช่นเดิมกับวิธีแรก สามารถกดโหลดมาใช้งานได้เลย

การใช้งานผ่าน Fastlane

คำเตือน วิธีนี้เหมาะสำหรับผู้ที่เคยใช้งาน Fastlane มาก่อน มิฉะนั้นการ setup ครั้งแรกอาจจะยากพอสมควร

สำหรับวิธีนี้ ชาว iOS น่าจะคุ้นเคยกันดี เพราะ Fastlane คืออีกหนึ่งเครื่องมือเทพที่จะมาช่วยให้การพัฒนาแอป iOS นั้นง่ายยิ่งขึ้น

แน่นอนว่า ต้องมี fastlane ในเครื่องและในโปรเจคก่อนนะ!

เมื่อ setup fastlane ให้กับโปรเจคแล้วก็สามารถสร้าง lane ใหม่เพื่อทำการ distribute ผ่าน App Distribution ได้เลย

ขั้นแรกคือเราต้องเพิ่ม plugin ให้กับ fastlane ของโปรเจคเราก่อน

fastlane add_plugin firebase_app_distribution

จากนั้นทำการเพิ่ม step ใน lane ของเรา โดยเราจะสร้าง lane ใหม่ก็ได้ หรือจะเปลี่ยนจาก lane ที่เราใช้เพื่ออัพเข้า beta ก็ได้เช่นกัน (เพราะมันมาแทน beta นั่นแหละ)

platform :ios do
desc "Distribute iOS App to Firebase App Distribution"
lane :firebase_distribute do
enable_automatic_code_signing
build_ios_app(
scheme: "firebaseDistribution",
workspace: "firebaseDistribution.xcworkspace")
firebase_app_distribution(
app: "1:453826819908:ios:cda659fb15ab9128",
groups: "QA",
release_notes: "Update v1.0.2 via Fastlane!!",
firebase_cli_path: "/usr/local/bin/firebase"
)
end
end

ซึ่งในเคสนี้ผมสร้าง lane ขึ้นมาใหม่คือ firebase_distribute และใช้ enable_automatic_code_signing สำหรับการ signing เนื่องจาก config ใน xcode ไว้หมดแล้ว

จากนั้นก็ลองรันได้เลย!

fastlane firebase_distribute
จากนั้นรอ build ซักครู่ แล้วก็จะพบกับความสวยงาม 🤣

จะเห็นได้ว่า ทั้ง 3 วิธีสามารถส่งแอปของเราขึ้น App distribution ได้หมดเลย ขึ้นอยู่กับ Use case ของทีมเลยว่า จะใช้วิธีไหนกัน (สำหรับคนที่ทำ Continuous Delivery ด้วย fastlane อยู่แล้ว ก็จะคุ้นเคยกับวิธีที่ 3 เป็นพิเศษ)

ซึ่ง ณ ตอนนี้เจ้า App distribution นั้นยังอยู่ในช่วง Beta อยู่ อาจจะมีบัคบ้างเล็กๆน้อยๆ แต่ก็ถือว่าเป็นนิมิตหมายที่ดี เนื่องจาก Fabric กำลังจะถูกปิดตัวในเดือนมีนาคม ปี 2020 นั่นเอง 😭

ดังนั้น การแบ่งเวลาทำงานเล็กๆน้อยๆ เพื่อเตรียมตัวสำหรับ App Distribution ถือว่าไม่เสียหายแต่อย่างใดนะ อย่าลืมไปทดลองใช้กันหล่ะ!

สำหรับการใช้งาน Firebase App Distribution ของ Android สามารถเข้าไปอ่านกันได้เลยที่บทความของพี่ตี๋ Firebase GDE คนดังนั่นเอง~~

สำหรับบทความนี้ ก็ขอจบเพียงเท่านี้ หากมีข้อสงสัยต่างๆ สามารถถามในกลุ่ม Firebase Developer Group Thailand ได้เลยนะ!

ทดสอบแอปกันให้สนุก สำหรับวันนี้ สวัสดีครับ 😁

--

--

Kajornsak P.
Firebase Thailand

Android & iOS developer. Interest in UI/UX design. Currently, Senior iOS Engineer at Agoda — Mobile Platform team