Khái quát về Apple Developer Account, Certificates, Provioning Profiles...
Trong phát triển ứng dụng iOS, khi run app, debug, export ra file cài đặt .ipa hoặc upload app lên App Store, bạn đều cần phải đăng nhập tài khoản developer của Apple. Bạn có thể tạo tài khoản Apple developer miễn phí tại trang https://developer.apple.com/account/. Mặc định tài khoản sau khi tạo sẽ ...
Trong phát triển ứng dụng iOS, khi run app, debug, export ra file cài đặt .ipa hoặc upload app lên App Store, bạn đều cần phải đăng nhập tài khoản developer của Apple. Bạn có thể tạo tài khoản Apple developer miễn phí tại trang https://developer.apple.com/account/. Mặc định tài khoản sau khi tạo sẽ là tài khoản free, bạn chỉ có thể run, debug app qua việc cắm trực tiếp device thật hoặc chạy qua iOS simulator. Không những vậy, app của bạn sẽ bị giới hạn một số tính năng (capability) quan trọng như: iCloud, Push Notifications, Siri, Apple Pay... và không thể phát hành app lên App Store hoặc một số nguồn khác. Để không bị giới hạn và có thể trải nghiệm lập trình iOS thật sự, bạn nên nâng cấp thành tài khoản trả phí (join vào Membership Program) của Apple với mức phí từ 99 USD đến 299 USD/1 năm. Membership Program của Apple có 2 loại chính:
1. Apple Developer Program for Individuals:
Apple Developer Program for Individuals phù hợp với các cá nhân có nhu cầu phát triển và phát hành app lên App Store cho các thiết bị iPhone, iPad, Mac OS và Apple Watch, không bị giới hạn các capability, Safari extensions... App sau khi lên App Store sẽ hiển thị tên của cá nhân phát hành. Mức phí: 99 USD/1 năm.
2. Membership Program for Organizations:
Chia làm 2 loại:
- Apple Developer Program for Organizations: tương tự như Apple Developer Program for Individuals, tuy nhiên tài khoản này được quản lý dưới dạng một tổ chức. Nghĩa là bạn có thể mời các member trong team, trong công ty, tổ chức và quản lý, phân quyền cho họ. App sau khi lên App Store sẽ hiển thị tên của cả tổ chức phát hành. Ví dụ: Tài khoản A sau khi join Membership Program này sẽ được cấp quyền cao nhất (quyền Agent, thường là CEO, CTO). A có thể mời các tài khoản B, C, D và phân quyền admin (thường là team leader iOS) cho họ. Agent và các admin có quyền mời thêm các tài khoản khác dưới dạng member (các iOS developer). Mức phí: 99 USD/1 năm.
- Apple Developer Enterprise Program: phù hợp với các tổ chức, công ty, tập đoàn có nhu cầu phát triển và phát hành app nội bộ trong một nhóm không giới hạn người dùng thông qua download và cài trực tiếp từ file .ipa mà không qua kho ứng dụng App Store. Tài khoản enterprise cũng được tổ chức, phân quyền tương tự Membership Program for Organizations. Mức phí: 299 USD/1 năm.
Sau khi đã join vào Membership Program của Apple, điều bạn cần quan tâm đến là Certificates, App IDs và Provisioning Profiles. Certificate có thể coi là chứng minh nhân dân hoặc bằng lái xe của bạn vậy. Bạn cần request, download và sử dụng các signing certificate để xác thực, chứng nhận bạn có quyền phát triển và phát hành ứng dụng với tài khoản Apple developer tương ứng. Certificate được quản lý dưới dạng public key và private key. Khi muốn share certificate, bạn cần export certificate (private key) dưới dạng file .p12. Nếu làm mất private key, bạn phải tạo lại certificate khác từ đầu. Có 2 loại certificate cần chú ý. Đó là:
1. Development Certificates.
Là những certificate dành cho giai đoạn phát triển ứng dụng. Gồm 2 loại chính:
- iOS App Development: Development Certificate được dùng trong quá trình develop app. Giúp developer có thể run và debug app trong môi trường development. Thường thì mỗi thành viên trong team phát triển sẽ cần tạo một certificate loại này để chứng nhận quyền develop app. Mỗi member được tạo tối đa 4 certificate development.
- Apple Push Notification service SSL (Sandbox): dùng cho server push notification ở môi trường development cho một App ID cụ thể. Ví dụ bạn cần push notification về một app có App ID là com.xxx.yyy thì server push cần được cấp quyền push. Quyền push được thể hiện qua certificate dạng này.
2. Production Certificates.
Là những certificate dùng để phát hành ứng dụng. Có nhiều loại, nhưng thường thì ta chỉ cần quan tâm đến 3 loại:
- App Store and Ad Hoc: Certificate loại này cho phép bạn có quyền distribute app lên App Store hoặc trên một list các thiết bị có sẵn trong tài khoản dạng Ad Hoc.
- Apple Push Notification service SSL (Production): Tương tự như Apple Push Notification service SSL (Sandbox), certificate này cấp quyền cho server push notification đến app trong môi trường production.
- In-House and Ad Hoc: Certificate này chỉ xuất hiện với tài khoản enterprise, cho phép phát hành app dạng Ad Hoc hoặc In-House (không giới hạn số lượng thiết bị, không cần biết trước UUID...).
1. App IDs.
Như chúng ta đã biết, Apple phân biệt các ứng dụng với nhau thông qua App ID (định danh của mỗi ứng dụng). App ID là duy nhất và không thể tạo trùng. Ngoài ra, bạn có thể thiết lập (enable/disable, configurate) các service của app như: HealthKit, HomeKit, Siri, Push Notification, iCloud... cho từng App ID.
2. Devices.
Với mỗi tài khoản, chúng ta có thể thêm tối đa 100 device kèm với UUID của chúng để quản lý, cấp quyền App ID nào có thể run, debug, distribute. Device đã thêm vào sẽ không thể xóa trong thời gian Membership Program năm đó chưa hết hạn. Vì vậy hãy cân nhắc và cẩn thận mỗi khi thêm device.
3. Provisioning Profiles.
Một cách ngắn gọn để giải thích về provisioning profile là công thức sau: Provisioning Profile = Certificate (Development hoặc Production) + App ID + Devices List (nếu distribute dạng Ad Hoc hoặc debug development). Provisioning Profile có thể được tạo ra tự động nếu bạn enable option Auto Signing trên Xcode hoặc có thể được tạo và quản lý bởi các tài khoản admin trở lên. Để tạo provisioning profile cho một app ở môi trường development, bạn cần chọn App ID, chọn các Certificate được join vào, chọn list devices. Một trong các thành phần của provisioning profile bị invalid thì profile đó sẽ invalid và không sử dụng được. Ví dụ một team member revoke development certificate của người đó thì tất cả các provisioning profile chứa certificate đó sẽ bị invalid. Hoặc khi xóa một App ID thì tất cả các provisioning profile liên quan cũng sẽ bị xóa theo.