1. ก่อนเริ่มต้น
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ Firebase App Distribution และปลั๊กอิน fastlane เพื่อเผยแพร่แอป iOS ให้แก่ผู้ทดสอบ รวบรวม UDID ของอุปกรณ์ทดสอบ และลงทะเบียนไปยังโปรไฟล์การจัดสรรของแอป เพื่อให้คุณสร้าง Ad Hoc ไปสู่ผู้ทดสอบได้อย่างรวดเร็ว มือ
สิ่งที่คุณจะได้เรียนรู้
- วิธีอัปโหลดและเผยแพร่แอป iOS รุ่นทดลอง (Ad Hoc) ให้กับผู้ทดสอบโดยใช้ Firebase App Distribution และ fastlane
- วิธีลงชื่อสมัครเป็นผู้ทดสอบและดาวน์โหลดแอปที่จัดจำหน่ายในอุปกรณ์ทดสอบ
- วิธีลงทะเบียนอุปกรณ์ทดสอบอย่างรวดเร็วโดยการส่งออก UDID ของอุปกรณ์ทดสอบด้วยปลั๊กอิน fastlane ของ App Distribution
- วิธีอัปเดตโปรไฟล์การจัดสรรของแอปและอัปโหลดอีกครั้งเพื่อการเผยแพร่
สิ่งที่ต้องมี
- บัญชี Google
- เครื่อง Apple ที่ติดตั้ง XCode 11.7 ขึ้นไป
- แอป Ad Hoc รุ่นทดลองของ iOS ในตัว Xcode
- บัญชีนักพัฒนาแอป Apple แบบชำระเงิน
- อุปกรณ์ iOS จริงสำหรับการทดสอบ
แอปเครื่องจำลอง iOS จะใช้งานได้ใน Codelab ส่วนใหญ่ แต่เครื่องจำลองจะดาวน์โหลดรุ่นไม่ได้
คุณยังสามารถยืนยันว่าการตั้งค่าทำงานได้โดยยืนยันว่าการตั้งค่า "ดาวน์โหลด" จะปรากฏในเว็บแอปของผู้ทดสอบ App Distribution
2. เริ่มต้นใช้งาน
ตั้งค่า fastlane
App Distribution ทำงานร่วมกับ fastlane เพื่อให้คุณเผยแพร่บิลด์รุ่นทดลองของแอปได้โดยอัตโนมัติ App Distribution ผสานรวมกับการกำหนดค่า Fastlane
- ติดตั้งและตั้งค่า fastlane
- เรียกใช้
fastlane init
ในไดเรกทอรีรูทของโปรเจ็กต์ระหว่างการตั้งค่า แล้วเลือก "การตั้งค่าด้วยตนเอง" คุณจะเห็นไดเรกทอรีย่อยfastlane
ที่มีFastfile
,Appfile
และPluginfile
ซึ่งคุณจะใช้เพื่อกำหนดค่า fastlane
ติดตั้ง Firebase CLI
คุณจะต้องติดตั้ง Firebase CLI ด้วย หากคุณใช้ macOS หรือ Linux คุณสามารถเรียกใช้คำสั่ง cURL ต่อไปนี้
curl -sL https://firebase.tools | bash
หากใช้ Windows โปรดอ่านวิธีการติดตั้งเพื่อรับไบนารีแบบสแตนด์อโลนหรือติดตั้งผ่าน npm
เมื่อติดตั้ง CLI แล้ว การเรียกใช้ firebase --version
ควรรายงานเวอร์ชัน 12.0.0
ขึ้นไป
$ firebase --version 12.0.0
3. สร้างแอปด้วย Fastlane
สร้างแอป
- ตั้งค่าตัวแปรร่วมสำหรับ fastlane ใน
./fastlane/Appfile.
ให้รวมรหัสของแอปและ Apple ID ดังนี้
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- สร้างช่องทางแรกและใช้การดำเนินการ
build_app
ของ fastlane (หรือที่เรียกว่าgym
) เพื่อสร้างแอปโดยเพิ่มสิ่งต่อไปนี้ลงใน./fastlane/Fastfile
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- รับรองแอปเพื่อเผยแพร่
สำหรับ Codelab นี้ คุณจะจัดการการรับรองและโปรไฟล์ของคุณเองโดยใช้ get_certificates
(หรือที่เรียกว่า cert
) ซึ่งจะสร้างใบรับรองที่มีการรับรองไว้ในเครื่องและจัดเก็บทุกอย่างไว้ในพวงกุญแจ macOS อย่างไรก็ตาม โดยปกติแล้ว คุณจะต้องใช้ fastlane sync_code_signing action
(หรือที่เรียกว่า match
) เพื่อจัดการใบรับรองและโปรไฟล์การรับรองโค้ดของทีมอย่างปลอดภัย
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
- ตั้งค่าโปรไฟล์การจัดสรรสำหรับแอปโดยใช้การดำเนินการ
get_provisioning_profile
(หรือที่เรียกว่าsigh
) การดำเนินการนี้จะช่วยให้คุณแชร์แอปกับผู้ทดสอบได้
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [ไม่บังคับ] หากคุณไม่เคยเรียกใช้แอปมาก่อน ให้เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างแอปใน Apple Developer Console
$ fastlane produce --skip_itc
- สุดท้าย ให้สร้างแอปโดยการวิ่งในเลน
ระบบจะแจ้งให้คุณใส่ Apple ID, รหัสผ่าน (ซึ่งจัดเก็บไว้ใน Keychain) และรหัสชุดของแอป
$ fastlane build
หากคุณพบปัญหาใดๆ โปรดดูคู่มือการแก้ปัญหา fastlane
4. อัปโหลดแอปไปยัง Firebase
เมื่อสร้างแอปแล้ว คุณก็พร้อมที่จะอัปโหลดไปยัง App Distribution
สร้างและตั้งค่าโปรเจ็กต์ Firebase
- ลงชื่อเข้าใช้ Firebase
- ในคอนโซล Firebase ให้สร้างหรือเพิ่มโปรเจ็กต์ใหม่ แล้วตั้งชื่อโปรเจ็กต์ว่า "UDID Export Codelab"
คุณไม่จำเป็นต้องเปิดใช้ Google Analytics สำหรับโปรเจ็กต์นี้
- คลิกสร้างโครงการ
เพิ่มแอป iOS ลงในโปรเจ็กต์
- คลิกไอคอน iOS เพื่อสร้างแอป Firebase iOS ใหม่แล้วป้อนรหัสชุดของแอป
- ข้ามขั้นตอนถัดไป แล้วคลิกไปที่คอนโซล คุณจะเพิ่ม SDK ลงในแอปภายหลัง
ตอนนี้โปรเจ็กต์และแอปของคุณพร้อมใช้งานแล้วในหน้าภาพรวมโปรเจ็กต์
เปิดใช้ App Distribution
- ภายใต้การเปิดตัวและ คลิก App Distribution จากส่วนตรวจสอบ
- หลังจากยอมรับข้อกำหนด ให้คลิก "เริ่มต้นใช้งาน" เพื่อเปิดใช้ App Distribution สำหรับแอปของคุณ
ตั้งค่าการกระจายใน fastlane
- เรียกใช้คำสั่งต่อไปนี้จากรูทของโปรเจ็กต์ iOS เพื่อเพิ่ม App Distribution ลงในการกำหนดค่า fastlane
หากคําสั่งแสดงตัวเลือก ให้เลือกตัวเลือกที่ 3: RubyGems.org
$ fastlane add_plugin firebase_app_distribution
- ยืนยันว่าติดตั้งปลั๊กอินแล้ว
$ fastlane
เอาต์พุตควรแสดง fastlane-plugin-firebase_app_distribution
ในรายการปลั๊กอินที่ติดตั้ง
- หลังจากยืนยันว่าติดตั้งปลั๊กอินแล้ว ให้เลือกตัวเลือก 0 เพื่อยกเลิก
ตรวจสอบสิทธิ์โปรเจ็กต์ Firebase
หากต้องการใช้ปลั๊กอิน fastlane คุณจะต้องตรวจสอบสิทธิ์โปรเจ็กต์ Firebase ก่อน
- เรียกใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อ CLI กับบัญชี Google ของคุณ
$ firebase login
- เมื่อคำสั่งพิมพ์ลิงก์การตรวจสอบสิทธิ์ ให้เปิดลิงก์ในเบราว์เซอร์
- เมื่อได้รับข้อความแจ้ง ให้ลงชื่อเข้าใช้บัญชี Google และให้สิทธิ์เข้าถึงโปรเจ็กต์ Firebase
จัดจำหน่ายแอปของคุณ
ตอนนี้คุณพร้อมจัดจำหน่ายแอปแล้ว
- กำหนดตัวแปรชื่อ
firebase_app_id
ที่ด้านบนของ./fastlane/Fastfile
แทนที่<your_app_id>
ด้วยรหัสแอป Firebase สำหรับแอปที่คุณสร้าง (ดูได้ในหน้าการตั้งค่าโปรเจ็กต์)
Fastfile
เขียนด้วยภาษา Ruby ดังนั้นให้ใช้ไวยากรณ์ Ruby เพื่อกำหนดตัวแปร
firebase_app_id = "<your_app_id>"
- เพิ่มเลนใหม่ที่เรียกว่า
distribute
ซึ่งเรียกเลนที่ก่อสร้าง จากนั้นจะกระจายแอปของคุณโดยใช้การดำเนินการfirebase_app_distribution
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- เรียกใช้ช่องทางใหม่เพื่อสร้างแอปและสร้างการจัดจำหน่าย
$ fastlane distribute
ในขั้นตอนนี้ Fastfile ควรมีลักษณะดังต่อไปนี้
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
หลังจากรีเฟรชคอนโซล Firebase แล้ว คุณจะเห็นแอปรุ่นใหม่
5. เชิญผู้ทดสอบให้ดาวน์โหลดแอป
เมื่อผู้ทดสอบยอมรับคำเชิญให้ทดสอบบิลด์ Ad Hoc ผู้ทดสอบก็จะต้องขออนุญาตแชร์ UDID ของตน หากนักพัฒนาแอปยอมรับ App Distribution จะเก็บรวบรวมข้อมูลอุปกรณ์และแจ้งให้คุณทราบทางอีเมล ในส่วนนี้ คุณจะต้องเพิ่มตนเองเป็นผู้ทดสอบเพื่อดาวน์โหลดและทดสอบแอปที่คุณเผยแพร่
เพิ่มตัวคุณเองเป็นผู้ทดสอบรุ่น
- ในส่วน
firebase_app_id
ที่ด้านบนของ Fastfile ให้สร้างตัวแปรเพื่อเก็บผู้ทดสอบและใส่อีเมลของคุณเอง รวมถึงอีเมลที่ไม่บังคับอื่นๆ ที่ต้องการลองใช้
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- ใช้วิธี Array#join ของ Ruby เพื่อเปลี่ยนอาร์เรย์
app_testers
เป็นสตริงที่คั่นด้วยคอมมา ซึ่งพารามิเตอร์testers
ต้องการ จากนั้น ส่งผลลัพธ์ไปยังพารามิเตอร์testers
ของfirebase_app_distribution.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
ในขั้นตอนนี้ Fastfile ควรมีลักษณะดังนี้
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- วิ่งเลนอีกครั้ง
$ fastlane distribute
เมื่อเรียกใช้ช่องทางแล้ว ผู้ทดสอบที่เพิ่มไว้จะได้รับอีเมลคำเชิญจาก App Distribution ที่แจ้งให้ผู้ทดสอบทราบเกี่ยวกับรุ่นใหม่ ตอนนี้คอนโซล Firebase จะแสดงผู้ทดสอบที่เพิ่มไว้ภายใต้รุ่นของแอป
เนื่องจากคุณใส่อีเมลไว้ด้วย คุณจะได้รับอีเมลจาก Firebase App Distribution ที่เชิญให้คุณทดสอบแอป ตอนนี้คุณเป็นผู้ทดสอบคนแรกแล้ว ดำเนินการต่อในส่วนด้านล่างเพื่อเพื่อตั้งค่าเป็นผู้ทดสอบในอุปกรณ์ทดสอบ
ลงทะเบียนอุปกรณ์ทดสอบ
ในฐานะผู้ทดสอบ คุณจะต้องลงชื่อเข้าใช้ Google ในอุปกรณ์ทดสอบเพื่อเข้าถึงรุ่นต่างๆ ของแอปที่ได้รับเชิญให้ทดสอบ เนื่องจากบิลด์ทดสอบเป็นรุ่นเฉพาะกิจ คุณจึงต้องลงทะเบียนอุปกรณ์ทดสอบด้วยการติดตั้งโปรไฟล์ Firebase หลังจากนั้น คุณจะเข้าถึงรุ่นที่พร้อมใช้งานได้จากเว็บแอปสำหรับทดสอบ App Distribution โดยใช้เว็บคลิปที่เพิ่มลงในหน้าจอหลักของอุปกรณ์
- ในอุปกรณ์ทดสอบ iOS ให้เปิดอีเมลที่ส่งจาก Firebase App Distribution แล้วแตะลิงก์เริ่มต้นใช้งาน ตรวจสอบว่าได้เปิดลิงก์ใน Safari
- ตอนนี้คุณอยู่ในเว็บแอปสำหรับผู้ทดสอบ App Distribution แล้ว ในหน้าที่ปรากฏขึ้น ให้ลงชื่อเข้าใช้ด้วยบัญชี Google แล้วแตะยอมรับคำเชิญ
- คุณจะดูผลงานที่ได้รับเชิญได้แล้ว แตะลงทะเบียนอุปกรณ์ใต้รุ่นใดรุ่นหนึ่ง
- เมื่อได้รับข้อความแจ้ง ให้ดาวน์โหลดโปรไฟล์ Firebase จากนั้นติดตั้งโปรไฟล์ในแอปการตั้งค่า
การติดตั้งโปรไฟล์จะเป็นการให้สิทธิ์ Firebase ในการทำสิ่งต่อไปนี้
- ลงทะเบียนอุปกรณ์ทดสอบโดยรวบรวมรหัสอุปกรณ์ที่ไม่ซ้ำกัน (UDID) ของอุปกรณ์
Firebase จะส่งอีเมลที่มี UDID ของอุปกรณ์ทดสอบให้แก่เจ้าของและผู้แก้ไขทั้งหมดของโปรเจ็กต์ Firebase
- ติดตั้งเว็บคลิปลงในหน้าจอหลักของอุปกรณ์ทดสอบ เว็บคลิปจะเปิดเว็บแอปของผู้ทดสอบ App Distribution ซึ่งช่วยให้คุณติดตั้งและเข้าถึงแอปทดสอบทั้งหมดได้
ในเว็บแอปของผู้ทดสอบ App Distribution ระบบจะลงทะเบียนอุปกรณ์ทดสอบสำหรับรุ่นของแอปแล้ว
เมื่อแชร์ UDID ของอุปกรณ์ทดสอบกับ Firebase แล้ว คุณจะกลับมาเป็นนักพัฒนาซอฟต์แวร์ต่อได้ ในแท็บผู้ทดสอบของแดชบอร์ด App Distribution ตอนนี้ข้อมูลผู้ทดสอบของคุณจะปรากฏใต้รุ่นของแอปโดยมีสถานะเป็น "ยอมรับแล้ว" ดังนี้
ในหัวข้อถัดไป คุณจะต้องเพิ่ม UDID ของอุปกรณ์ลงในโปรไฟล์การจัดสรรของแอป แล้วสร้างแอปเวอร์ชันที่ใช้งานได้กับอุปกรณ์ทดสอบของคุณ
ส่งออก UDID ของอุปกรณ์สำหรับผู้ทดสอบ
ในฐานะนักพัฒนาซอฟต์แวร์ คุณจะได้รับอีเมลจาก Firebase ที่มี UDID ของอุปกรณ์ทดสอบ App Distribution ช่วยให้รวบรวม UDID ของอุปกรณ์ใหม่หลายรายการพร้อมกันได้อย่างง่ายดาย โดยให้คุณส่งออกเป็นไฟล์ข้อความดิบจากคอนโซล Firebase ได้โดยตรง
- หากต้องการส่งออก UDID ทั้งหมด ให้เปิดผู้ทดสอบและ Groups
- คลิก ส่งออก UDID ของ Apple
ไฟล์ควรมี UDID ของอุปกรณ์ทดสอบ
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
คุณยังส่งออก UDID จากบรรทัดคำสั่งโดยใช้ fastlane ได้ด้วย ซึ่งจะทำในส่วนถัดไป
6. อัปเดตโปรไฟล์การจัดสรรของแอปและสร้างโปรไฟล์ใหม่
จากนี้ไปให้คุณเพิ่ม UDID ของอุปกรณ์ทดสอบลงในโปรไฟล์การจัดสรรของแอป สร้างแอปเวอร์ชันที่ใช้ได้กับอุปกรณ์ของคุณอีกครั้ง และเผยแพร่แอปเวอร์ชันใหม่
เพิ่มช่องทางการส่งออก UDID
- เพิ่มตัวแปรอีกตัวหนึ่งที่ด้านบนของ Fastfile แล้วตั้งค่าเป็นเส้นทางไฟล์ที่ผู้ทดสอบ UDID ของอุปกรณ์จะดาวน์โหลด
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- ตั้งค่าช่องทางใหม่ที่ใช้การส่งออก UDID ของปลั๊กอิน App Distribution เพื่อดาวน์โหลด UDID ของผู้ทดสอบ เช่นเดียวกับที่คุณทำจากคอนโซล
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- เรียกใช้ช่องทางต่อไปนี้เพื่อดาวน์โหลด UDID
$ fastlane download_udids
- พิมพ์ไฟล์ที่ดาวน์โหลด ซึ่งควรมี UDID ของอุปกรณ์ทดสอบ
$ cat tester_udids.txt
เพิ่มอุปกรณ์ลงในคอนโซลของนักพัฒนาซอฟต์แวร์ Apple
- สร้างช่องทางต่อไปนี้เพื่อเพิ่ม UDID ไปยังรายการอุปกรณ์ใน Play Console ของ Apple เพื่อให้เพิ่ม UDID ดังกล่าวลงในโปรไฟล์การจัดสรรได้โดยใช้การดําเนินการ fastlane
register_devices
ดังนี้
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- จากนั้น ให้วิ่งบนเลน:
$ fastlane add_new_devices
จากนั้นคุณควรเห็นอุปกรณ์ใหม่ในรายการอุปกรณ์ของแผงควบคุมสำหรับนักพัฒนาซอฟต์แวร์
เพิ่มอุปกรณ์ลงในโปรไฟล์การจัดสรร
- เพิ่มอาร์กิวเมนต์
force
ในขั้นตอนโปรไฟล์การจัดสรรในช่องทางbuild
เพื่อบังคับให้อุปกรณ์รับอุปกรณ์ใหม่ทุกครั้งที่คุณสร้าง
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
วิ่งอีกครั้งเพื่อสร้างและอัปโหลด
ในตอนนี้ คุณจะต้องอัปเดตเลนของ distribute
ด้วยช่องทางใหม่เพื่อเพิ่มอุปกรณ์ลงในโปรไฟล์การจัดสรร สร้างแอปอีกครั้ง แล้วเผยแพร่
- เรียกช่องทางใหม่จาก
distribute
:
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
- เรียกใช้เลน
distribute
:
$ fastlane distribute
ในขั้นตอนนี้ Fastfile ควรมีลักษณะดังนี้
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
ดาวน์โหลดรุ่นจากอุปกรณ์ทดสอบ
เมื่อแอปของคุณมี UDID ของอุปกรณ์ทดสอบแล้ว ก็จะติดตั้งแอปในอุปกรณ์ทดสอบได้
- ในอุปกรณ์ทดสอบ ให้กลับไปที่เว็บแอปสำหรับผู้ทดสอบ App Distribution โดยใช้ลิงก์ในอีเมลหรือไอคอนบนหน้าจอหลักของอุปกรณ์
เมื่อไปที่แอป UDID Codelab คุณจะเห็นว่ารุ่นพร้อมให้ดาวน์โหลดแล้ว
- หากใช้อุปกรณ์จริง ให้กดดาวน์โหลด แล้วติดตั้งและเรียกใช้แอป
7. ขอแสดงความยินดี
คุณได้กำหนดค่า App Distribution และ fastlane เพื่อดำเนินกระบวนการทดสอบรุ่นทดลองโดยอัตโนมัติแล้ว ตอนนี้เมื่อต้องการเชิญผู้ทดสอบเพิ่มเติมหรือเพิ่ม UDID ลงในแอป คุณเพียงแค่เรียกใช้คำสั่งเดียวคือ fastlane distribute
ไม่ต้องเก็บข้อมูล UDID แยกจากผู้ทดสอบทีละรายการ หรือไม่ก็ไปที่ Play Console ของ Apple เพื่ออัปเดตรายการอุปกรณ์หรือโปรไฟล์การจัดสรรอีกต่อไป โดยไม่จำเป็นต้องเปิด XCode
เวิร์กโฟลว์นี้ง่ายต่อการตั้งค่าให้ทำงานทุกชั่วโมงหรือทุกวันในสภาพแวดล้อมการผสานรวมอย่างต่อเนื่อง
อ่านเพิ่มเติม
- สำรวจฟีเจอร์ของ Firebase App Distribution รวมถึง SDK ในแอปสำหรับ iOS
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ fastlane
- จัดการการลงนามโค้ดของทีมด้วย
match
- ผสานรวม fastlane ลงใน CI