Certificates, Identifiers, Devices, Profiles Provisioning và mối quan hệ giữa chúng
Tôi xuất phát với nghề lập trình ở công việc Android Developer. Với Android, việc build app, chạy app trên device hay thậm chí release CH Play rất đơn giản. Nó đơn giản như việc bạn tạo ra 1 file .exe và chạy nó trên bất cứ máy tính Windows nào vậy, chỉ khác là với Android thì bạn tạo ra file .apk.
Nhưng với iOS thì là 1 câu chuyện hoàn toàn khác, Apple luôn muốn mọi thứ thực sự chặt chẽ để đảm bảo an toàn. Nhưng cái gì cũng có 2 mặt, việc này khiến cho mong muốn build và chạy app trên device trở lên phức tạp hơn, nhiều thành phần hơn và đôi khi tôi thấy nó thật rối rắm.
May mắn thay, sau khi trải qua dự án CENSORED tôi đã phần nào hiểu về nó. Bài viết này của tôi chủ yếu chia sẻ về mối quan hệ giữa các thành phần trong việc build và chạy app iOS trên device (iPhone, iPad), thứ mà tôi tìm trên internet thấy nó khá lộn xộn.
Những thành phần tôi nói đến bao gồm: Certificates, Identifiers, Devices và Profiles Provisioning như trong menu của trang console apple developer.
Các khái niệm - IDENTIFIERS Là định danh một app, còn được gọi là App ID hay Bundle ID. Identifiers trong Apple Developer còn cho biết app này có tính năng gì nhạy cảm không như Push notification, Bản đồ, Đọc NFC, etc. Ví dụ: com.company.appname.
CERTIFICATES Là định danh một máy Mac. Dùng để xác định một máy Mac có thể tham gia vào quá trình build app được hay không. Ngoài ra, nếu bạn muốn máy Mac của mình build app có IDENTIFIERS đăng ký tính năng Push Notification thì cũng cần đăng ký thêm một Certificate cho máy Mac đó. Việc đăng ký certificate trải qua các bước: ① Tạo certificate request file ở máy Mac → ② Add Certificate ở Apple developer website → ③ Upload certificate request file đã tạo ở ① sẽ sinh ra Certificate → ④ Download Certificate về và double click để install vào máy Mac. Lưu ý rằng ở ④, máy nào tạo ① thì máy đó install mới có tác dụng.
DEVICES Nghe qua là biết rồi, để định danh cho thiết bị như iPhone, iPad có thể sử dụng app trong quá trình develop 1 app. Để thêm 1 device thì cần paste UUID của device vào là được.
PROFILE PROVISIONING Là một file dùng để build app iOS, nó để xác định phạm vi của app với 3 thành phần trên: App có identifier là gì, có tính năng gì; App chỉ có thể build từ máy Mac nào; App có thể chạy trên device nào (khi đang develop). Vì vậy khi tạo Profile Provisioning thì cần chỉ định Certificates, Identifiers, Devices. Và khi tạo xong thì cần download và double click để install vào máy Mac dùng để build app. Mối quan hệ
Sau khi đọc mục Các khái niệm thì chắc hẳn bạn đã hình dung ra phần nào mối quan hệ giữa các thành phần này rồi. Mình sẽ khái quát thành bản vẽ sau:
Thắc mắc thường gặp 1. Muốn nhiều máy Mac cùng build được app thì làm thế nào?
→ Có 2 cách: Cách 1: Tạo thêm Certificate; Cách 2: Từ máy Mac ban đầu, export certificate ra file .p12, sau đó install file .p12 này trên máy Mac mới. Cách 2 được recommend vì sẽ không bị sinh ra nhiều certificate trên Apple Developer.
Tôi không may ấn vào revoke certificate/profile provisioning thì có ảnh hưởng gì đến app đang chạy trên các device không?
→ KHÔNG ảnh hưởng trên các device đã cài app và các bản đã release trên store. Tuy nhiên máy Mac sử dụng certificate/profile provisioning đã bị revoke thì không build app được nữa.