iOS Developer กับ Provisioning Profiles

Wasith T. (Bai-Phai)
odds.team
Published in
2 min readApr 14, 2019

เมื่อ iOS Developer จะต้องอยู่กับการ sign app เป็นเรื่องปกติ เพราะ Apple จะไม่ยอมให้เราเอาแอปตาสีตาสาเข้าไปในมือถือ

ส่วนของ mac OS ก็จะเริ่มบังคับให้ sign app เร็ว ๆ นี้

การ sign app เป็นการใช้ certificates ทำการลงลายเซ็นด้วยขั้นตอนทางวิทยาการคอมพิวเตอร์ไปที่ตัวแอปหรือเอกสารใด ๆ เพื่อเป็นการบอกว่ามาจากผู้ผลิตตัวจริง ไม่ได้ถูกปลอมแปลงมา หรือสร้างโดยผู้อื่น

ใน iOS (กรณีไม่ jailbreak) แอปที่ใช้งานได้จะต้องเป็นแอปที่มาจากผู้พัฒนาที่ลงทะเบียนกับ Apple แล้วเท่านั้น

ไปอ่าน Apple Developer Program แต่ละแบบต่างกันยังไง!

ในขณะเดียวกัน Apple สามารถยกเลิก certificates หรือ team ของเราได้ตลอดเวลา ซึ่งถ้าโดนยกเลิก ก็ อาจจะมีผลทำให้ผู้ที่มีแอปอยู่ไม่สามารถเปิดใช้งานแอปได้

กรณีตัวอย่าง:

ซึ่งถ้าใครตามข่าว Google ก็โดนด้วย

แล้ว Provisioning Profiles คือ

ชุดของเอกสารทางอิเล็กทรอนิกส์ (digital entities) ที่ไว้ตรวจสอบว่าเรา

  • สามารถทดสอบแอปของเราบนเครื่องจริงได้หรือไม่ (Development Provisioning Profiles) สามารถติดตั้งแอปลงเครื่องแบบต่อสาย หรือ Wi-Fi เท่านั้น ตัวอุปกรณ์ที่ใช้ทดสอบต้องลงทะเบียน
  • สามารถติดตั้งแอปนี้เพื่อทดสอบผ่านช่องอ่านอื่น ๆ เช่นดาวโหลดจากเว็บไซต์ (AdHoc Distribute Provisioning Profiles) ตัวอุปกรณ์ที่ใช้ทดสอบต้องลงทะเบียนก่อนถึงจะใช้งานได้
  • สามารถติดตั้งแอปนี้เพื่อใช้งานหรือทดสอบผ่านช่องอ่านอื่น ๆ เช่นดาวโหลดจากเว็บไซต์ (Enterprise Distribute Provisioning Profiles) ซึ่งตัวอุปกรณ์ที่ใช้ไม่ต้องลงทะเบียนก็สามารถใช้งานได้
  • หรือสามารถส่งแอปนี้ขึ้นเพื่อจำหน่ายบน App Store ได้หรือไม่ (AppStore Distribute Provisioning Profiles)

Provisioning Profiles ประกอบไปด้วย

3 ส่วนหลักคือ App ID, Developer Certificates, UDID ของอุปกรณ์

  • App ID เอาไว้แยกว่าเป็นแอปเดียวกันหรือคนละแอป ภายใต้ทีมพัฒนาเดียวกัน ซึ่ง App ID แบ่งออกเป็น 2 ประเภท ได้แก่ explicit App ID และ wildcard App ID

explicit App ID จะขึ้นต้นด้วย team ID หลังจากนั้นขั้นด้วยจุด “.” และตามด้วย reverse domain เช่น A1B2C3D4E3.com.github.ph9.app

Team ID แอปเปอลจะเป็นคนมอบให้หลังลงทะเบียน developer program แล้ว

สำหรับ wildcard App ID นั้นจะเป็น team ID ขั้นด้วยจุด แล้วลงท้ายด้วยเครื่องหมายดอกจัน “*” เช่น A1B2C3D4E3.* หรือ A1B2C3D4E3.com.github.ph9.* ก็ได้

สำหรับการขอใช้สิทธิ์บางอย่างเช่น bluetooth จะต้องใช้ explicit App ID เท่านั้น

  • Developer Certificates เป็น public key certificate ของ developer แต่ละคน
  • Unique Device Identifiers ชุดของ UDID ของเครื่อง ที่ได้ทำการลงทะเบียนเครื่องไว้กับ development program แล้ว
ถ้าดูใน Xcode จะขึ้นเครื่องหมายถูกทั้งหมด แปลเราสามารถ build, archive, distribute แอปตัวนี้ได้อย่างถูกต้อง

เพราะฉะนั้น provisioning profiles เอาไว้บอกว่าแอปที่เราพัฒนาอยู่สามารถใช้แมคเครื่องนั้นสำหรับ ติดตั้งลงอุปกรณ์เพื่อทดสอบ, ปล่อยเพื่อทดสอบ, ปล่อยเพื่อใช้งาน หรือปล่อยเพื่อขายหรือไม่ ไม่ได้เอาไว้ทำการ signing ตัวแอปโดยตรง

สำหรับบลอคนี้จบเพียงเท่านี้ สวัสดีครับ -/\-

--

--

Wasith T. (Bai-Phai)
odds.team

ตบมือเป็นกำลังใจให้ผมด้วยนะครับ 😘