Сертифікація в Apple Developer Center простим і зрозумілим мовою

Коротко про головне
В Apple Developer Center з незапам'ятних часів застосовується досить хитромудра система підписи ваших додатків на кожному з основних етапів — розробка, тестування та публікація.

Найчастіше при першому зануренні в цю систему у початківців (і не тільки) розробників виникають серйозні проблеми з розумінням того, як функціонує Apple Developer Center (будемо називати його «девцентр» для простоти). В результаті, мені в процесі професійної діяльності не раз доводилося спостерігати на нових місцях роботи величезні звалища з профілів і сертифікатів у девцентре, в результаті чого доводилося приступати до «розбору завалів».

При цьому, в мережі досить не такий великий вибір матеріалів на цю тему. Звичайно, офіційній документації Apple все добре структуроване і дуже детально описано, але часто просто не вистачає часу на вивчення такої кількості матеріалу. Як правило, хочеться швидко зрозуміти, що саме в якому порядку потрібно зробити для коректної роботи програми на етапах розробки, тестування і при публікації його в магазин App Store. У російському ж співтоваристві подібних матеріалів, зібраних в одному місці і в зручному доступі, я не бачив зовсім, тому і вирішив написати цю статтю. Для всіх, хто цікавиться — ласкаво просимо під кат.

Що ми будемо розбирати?
Ми розберемо процес управління вашим додатком Apple Developer Center від його створення до публікації в магазині App Store. Ми будемо говорити тільки про базові речі, таких, як розробка, тестування та публікації, а також обговоримо APNs (Push Notifications).

Відзначу той факт, що далі я буду описувати принцип роботи девцентра за станом на 31 березня 2016 року, тому якщо ви читаєте цю статтю пізніше — все вже могло змінитися.

Що нам знадобиться?
Власне, для роботи нам потрібно наступне:

  • Робочий Mac або PC з віртуальною машиною і встановленою на ній Mac OS.
  • Чинний Apple ID. Його завжди можна безкоштовно зареєструвати на офіційному сайті компанії Apple.
  • На вашому Apple ID (або в одній з компаній, яка додала ваш Apple ID в свою команду) повинна бути активована так звана Apple Developer Program — оплачувана раз на рік «підписка», що дає вам доступ до Apple Developer Center і можливість публікувати ваші додатки в App Store. На поточний момент вартість в перерахунку на рік невелика і складає в районі $99 за рік користування.
  • І, звісно ж, навички розробки під iOS.
Орієнтування по розділам
У девцентре для повноцінної роботи з вашими додатками нам знадобляться тільки два пункти:

  • Certificates, Identities & Profiles. Розділ забезпечує управління всією системою сертифікації ваших додатків. Роботу саме з цим розділом ми і будемо розбирати в даній статті.
  • iTunes Connect. Дає доступ до внутрішнього і зовнішнього тестування через TestFlight, а також до управління публікацією ваших додатків в App Store.
Термінологія
Давайте детально розберемо поняття, що лежать в основі функціонування девцентра Apple.

Сертифікати (Certificates)
Цей розділ дає доступ до управління сертифікатами, якими володіє ваш обліковий запис Apple ID. Кожен з етапів, які ви будете проходити, будь то розробка, тестування або публікація, включаючи всі значимі складові екосистеми Apple начебто Push Notifications, вимагає обов'язкової наявності актуального (чинного, Active) сертифіката. Простіше кажучи, ваш додаток не зможе навіть чхнути, не маючи на те дозволу з Apple Developer Center. Трохи докладніше про підрозділах:

  • Pending. Запитані вами сертифікати, що знаходяться в процесі обробки від Apple. Для дів (Development) і прод (Production) сертифікатів конкретно в моєму випадку цей підрозділ найчастіше пустує.
  • Development. Дів-сертифікати, що забезпечують можливість налагодження програми на конкретних девайсах (одному або декількох) через Xcode. Більш докладно поговоримо про них трохи нижче.
  • Production. Прод-сертифікати, що забезпечують працездатність програми при тестуванні в TestFlight і при публікації в магазині App Store.
Тепер розберемо типи сертифікатів.

Сертифікати типу «Development»

В першу чергу, потрібно знати, що девелоперський сертифікат завжди прив'язується до однієї конкретної машині. Тобто, не можна мати дів-сертифікат, прив'язаний до різних комп'ютерів. Якщо, приміром, ви влаштувалися на роботу iOS-програмістом, і в ваші завдання входить налагодження на пристроях (як правило, так і є), то вам знадобиться створити окремий дів-сертифікат конкретно для вашого Mac.

Інструкція по цьому процесу буде показана вам в девцентре Apple при початку створення сертифіката, там все розписано дуже докладно і зрозуміло, по кроках, труднощів виникати не повинно. Якщо коротко, то після вибору типу сертифіката (iOS App Development, для налагодження програми, або APNs Sandbox, для налагодження пушей) вам доведеться створити файл запиту до бюро сертифікації (Certificate Signing Identity Request), на основі якого і буде згенерований девелоперський сертифікат. Якщо ви хочете і налагоджувати додаток, і налагоджувати пуш-нотифікації в «пісочниці», то вам будуть потрібні обидва цих сертифіката. Забігаючи наперед, зазначу, що аналогічний процес застосовується і при створенні прод-сертифікатів.

Наявність дів-сертифіката означає, що, скачавши його і встановивши подвійним кліком у Зв'язку Ключів (Apple Keychain), ви зможете запускати ваше додаток прямо через Xcode в режимі налагодження на пристрої, підключивши пристрій дротом до вашого Mac. Перелік дозволених конкретних пристроїв Apple потрібно буде обов'язково вказати при генерації девелоперського профілю, але про це пізніше.

Сертифікати типу «Production»

Для початку на всякий випадок поясню, що складанням iOS-додатки називають *.ipa-файл, архів, що випускається з дотриманням правил сертифікації Apple через команду Project — Archive в Xcode.

Тепер про сертифікації. Прод-сертифікати забезпечують функціонування різних підсистем програми у «бойових» умовах, тобто в магазині App Store, а також на пристроях, де виконується внутрішнє і зовнішнє тестування програми через TestFlight. Тут, за аналогією з Development-сертифікацією, є тип App Store & Ad Hoc Production, а також тип APNs Production, що використовується веб-сервером для розсилки push-повідомлень. Якщо ви плануєте випустити додаток, що підтримує роботу з пушами, то вам знадобляться обидва сертифіката, як App Store & Ad Hoc (на основі якого ви зробите збірку і відправите додаток в iTunes Connect), так і APNs Production (його ви віддасте сервера, а той скористається їм для отримання прав на розсилку пушей). На додачу до вже згаданих підсистемах є ще кілька інших, що забезпечують доступ до Wallet, Apple Watch і так далі, але їх огляд виходить за рамки даної статті.

Дуже часто виникає питання про те, в чому ж різниця між App Store і тим самим Ad Hoc. Раніше вони були представлені різними сертифікатами, з деякого часу Apple об'єднала їх в єдине ціле, за що їм велике спасибі. Трохи докладніше про цих різновидах:

  • Випуск збірок типу App Store. Забезпечує можливість тестувати додаток в TestFlight, як в режимі внутрішнього, так і в режимі зовнішнього тестування. Також дає можливість опублікувати додаток в App Store.
  • Випуск збірок типу Ad Hoc. Термін «Ad Hoc» можна перекласти як «спеціальний», «для конкретної мети». Такий тип сертифікації забезпечує можливість запускати ваш додаток (включаючи всі потрібні підсистеми типу APNs) в бойових умовах, але тільки на конкретних девайсах, і без участі Xcode в процесі запуску. Іншими словами, Ad Hoc потрібен, якщо ви захочете поставити ваш додаток на стороннє пристрій, не маючи до нього прямого доступу (тобто не під'єднуючи його проводом до вашого Mac, так як в цьому випадку вам би вистачило Development-сертифіката), але при цьому і не викладаючи програму в iTunes Connect. Такий сертифікат використовується при створенні спеціального Ad Hoc-профілю, про який піде мова трохи пізніше.

Intermediate Certificates

Деякий час тому Apple внесла зміни в логіку роботи девцентра і своєї системи сертифікації, після чого на більшості комп'ютерів пропала можливість робити складання додатків, незважаючи на наявність активних дів — і прод-сертифікатів та актуальних профілів. Причина цього була в тому, що Apple додала додаткова вимога, щоб на вашому Mac в зв'язці ключів був встановлений спеціальний сертифікат під назвою «Worldwide Developer Relations Certificate Authority». Він встановлюється автоматично з новими версіями Xcode, але ті, у кого Xcode вже був встановлений раніше, просто повинні були встановити цей сертифікат вручну, скачавши його по прямой ссылке з секції Intermediate Certificates в девцентре Apple, після чого проблеми зі збірками зникали. Більше ніякого смислового навантаження цей сертифікат не несе.

Ідентифікатори (Identities)
Цей розділ забезпечує управління ідентифікаторами. Для вашої програми в мінімальному виконанні знадобиться App ID, управління якими доступно в однойменному підрозділі.

В буквальному перекладі «App ID» означає «ідентифікатор програми», що повністю відображає його суть. Будь-яке ваше додаток, яке ви хочете налагоджувати на пристрої Apple, тестувати через TestFlight та/або публікувати в магазин App Store, має володіти власним унікальним ім'ям, по якій його можна однозначно ідентифікувати серед тисяч інших додатків. При додаванні нового App ID вам буде запропоновано ввести декілька елементів:

  • App ID Description. Ім'я вашого додатка. Наприклад, якщо ваш додаток називається Mail Printer, то прямо так його і записуємо в текстовому полі.
  • App ID Prefix. Префікс вашого додатки, він видається вам автоматично буде спільним для конкретної команди Apple Team, де підключена і активна Apple Developer Program.
  • App ID Suffix. Тут нам знадобиться вибрати Explicit App ID, щоб вказати бандл (bundle) додатка. Це ідентифікатор, що зазвичай має вигляд com.mycompany.myappname, mycompany — ім'я вашої компанії або вашого домену. Наприклад, com.homecompany.MailPrinter. Звертаю вашу увагу, що точно такий же пакет повинен бути виставлений у налаштуваннях таргету (Target) вашого застосування в Xcode (секція налаштувань General, поле Bundle Identifier).
  • App Services. Тут вам треба відзначити ті сервіси, які ви плануєте використовувати у вашому додатку. За замовчуванням там відзначені тільки Game Center In-App Purchase, їх використання обов'язково, що їх не можна видалити. Інші сервіси підключайте по мірі необхідності.
Після створення App ID ви можете використовувати його для генерації будь-яких типів профілів, про це трохи пізніше.

Пристрою (Devices)
В цьому розділі розміщено управління усіма пристроями Apple, які ви можете використовувати у рамках вашої Apple Developer Program. Є обмеження-максимум 100 зареєстрованих девайсів на одну обліковий запис на рік, зазвичай цього більш ніж достатньо. При необхідності налагодження на пристрої або випуску Ad Hoc-складання просто додайте сюди UDID потрібних вам девайсів і використовуйте їх при генерації профілів.

Профілі (Provisioning Profiles)
Дослівно назва цього розділу перекладається як «Профілі забезпечення». Трохи більш розгорнуто я б описав поняття «профіль» як «Спеціальний файл, що забезпечує доступ до деякої функціональності в конкретній складанні вашого додатки». В даному розділі девцентра ви можете керувати вашими профілями, забезпечуючи собі можливість випускати складання програми для різних цілей, тобто «профілювати» його. По суті, профіль є результатом об'єднання двох (іноді трьох) компонентів:

  • Активного сертифіката певного типу (розділ Certificates). З допомогою сертифіката профіль підтверджує, що ваш додаток має право на виконання певної групи дій.
  • App ID (розділ Identities). Визначає конкретний додаток, для якого випускається профіль.
  • У деяких випадках, ще потрібен список зареєстрованих пристроїв (розділ Devices). Визначає перелік пристроїв, на які дозволено встановлювати вашу збірку. Використовується тільки з деякими типами профілів.
На виході якраз і отримуємо профіль для випуску збірок з певними цілями. Давайте розглянемо різновиди профілів.

Профілі типу «Development»

Це профіль для розробки, тобто для налагодження програми на конкретних пристроях через Xcode з прямим підключенням пристрою дротом до вашого Mac. Дів-профілі представлені двома видами:

  • iOS App Development. Вимагає зазначення переліку дозволених пристроїв з розділу Devices.
    Використовується для налагодження iOS-додатків.
  • tvOS App Development. Аналогічно, тільки використовується для tvOS-додатків.

Профілі типу «Distribution»

Ці профілі використовуються для випуску збірок вашого програми для різних цілей. Продакшн-профілі представлені чотирма видами:

  • App Store. Використовується для тестування (як внутрішнього, так і зовнішнього) в TestFlight, а також для випуску програми в App Store.
  • tvOS App Store. Аналогічно попередньому, тільки для tvOS.
  • Ad Hoc. Вимагає зазначення переліку дозволених пристроїв з розділу Devices.
    Використовується, якщо ви хочете випустити збірку, яку можна буде поставити в режимі «Production», але тільки на деяких пристроях. Реальна ситуація, коли це може знадобитися, наприклад, наступна. Ви розробляєте додаток, а в процесі роботи замовник попросив у вас «дати йому помацати додаток» на своєму Apple-пристрої. У iTunes Connect для активації зовнішнього тестування ви ще виходити не готові, але прохання замовника потрібно виконувати — ось тут якраз і стане в нагоді Ad Hoc-профіль, створений на базі прод-сертифіката App Store & Ad Hoc Production Certificate.
  • tvOS Ad Hoc. Аналогічно попередньому, тільки для tvOS.
Коротко про iTunes Connect
Цей сервіс надає вам можливість управляти внутрішнім і зовнішнім тестуванням TestFlight, а також викладати додаток в App Store. Розгляд цього процесу виходить за рамки даної статті, згадаю лише той факт, що для коректної роботи цього сервісу необхідні для складання, створені на базі профілю типу Distribution — App Store (для iOS або tvOS). Інші типи профілів тут не підтримуються.

Резюмуємо
По суті, ваш алгоритм дій повинен зводитися до наступного:

  1. Визначитися, з яких конкретно машин буде проводитися пряма налагодження на пристроях через Xcode. Згенерувати для кожного з цих Mac сертифікати групи Development (генерувати їх потрібно на базі Certificate Signing Identity Request, який ви повинні отримати з кожного потрібного вам Mac).
  2. Дізнатися, з якої машини планується збирати збірки для тестування та/або публікації в App Store. Згенерувати для неї (або без них, якщо їх кілька) сертифікат групи Distribution.
  3. Проконтролювати наявність потрібного ідентифікатор програми в App ID і відповідність вказаного там бандла відповідного Bundle Identifier в проекті в Xcode, при наявності невідповідності усунути її або в девцентре, або в Xcode (де саме це правити — залежить від вашої конкретної ситуації).
  4. Прибрати (Revoke/Delete) всі сертифікати, а потім і профілі, які володіють позначкою Expired (минулий сертифікат) або Invalid (некоректний профіль). Також відзначу, що, на відміну від сертифікатів, профілі можна редагувати. Тобто, згенерувавши нові сертифікати, замість видалення старих профілів ви можете просто відредагувати їх, вказавши їм нові сертифікати в якості підпису.
  5. Якщо профілів немає або не вистачає потрібних, то згенерувати необхідні профілі.
  6. Завантажити і встановити потрібні для вашої машини сертифікати і профілі на свій комп'ютер. Установка проводиться подвійним кліком на файлі. Сертифікати будуть встановлені у Зв'язку Ключів (Apple Keychain), профілі — в Xcode.
  7. Встановити в налаштуваннях проекту Xcode потрібні вам сертифікати в секції Build Settings — Code Signing Identity — Development/Distribution, а також вказати необхідний Provisioning Profile.
На цьому підготовка та чистка девцентра завершується. Далі ви можете виконувати будь-який з нижченаведених пунктів по необхідності:
  • Провести запуск у режимі відладки (Project — Run) через Xcode на дозволену пристрої, використовуючи дів-профіль.
  • Створити збірку (Project — Archive з обраним цільовим пристроєм Generic iOS Device) на базі продакшн-профілю Ad Hoc для установки на конкретні пристрої (таку збірку можна буде вислати, наприклад, по електронній пошті замовнику, щоб він встановив її на своє авторизований пристрій).
  • Створити збірку аналогічно попередньому пункту, але на базі продакшн-профілю App Store. Це буде збірка для внутрішнього і/або зовнішнього тестування, а також для викладки в App Store, яку можна використовувати в iTunes Connect.
Сподіваюся, це докладний опис допоможе вам розібратися в специфіці функціонування системи сертифікації додатків Apple, а також допоможе навести порядок у Apple Developer Center.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.