This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Пакування гри для iOS доступне лише у версії редактора Defold для Mac.
iOS вимагає, щоб будь-який застосунок, який ви збираєте й хочете запускати на телефоні чи планшеті, обов’язково був підписаний сертифікатом і профілем підготовки (provisioning profile), виданими Apple. Цей посібник пояснює кроки пакування гри для iOS. Під час розробки часто зручніше запускати гру через застосунок для розробки, оскільки він дає змогу виконувати гаряче перезавантаження вмісту й коду безпосередньо на пристрої.
Захист застосунків iOS складається з кількох компонентів. Щоб отримати доступ до потрібних інструментів, зареєструйтеся в програмі Apple iOS Developer Program. Після реєстрації перейдіть до центру учасників програми розробників Apple.

Розділ Certificates, Identifiers & Profiles містить усі потрібні інструменти. Тут можна створювати, видаляти й редагувати:
some.prefix.*), які можна використовувати для кількох застосунків. App ID можуть містити інформацію про сервіси застосунку, наприклад про ввімкнену інтеграцію з Passbook, Game Center тощо. Такі App ID не можуть містити символ підстановки. Щоб сервіси застосунку працювали, ідентифікатор пакета вашого застосунку має збігатися з ідентифікатором App ID.Для підписування ігор і застосунків у Defold потрібні чинний сертифікат і чинний профіль підготовки.
Деякі дії, доступні на головній сторінці Member Center, також можна виконати в середовищі розробки Xcode, якщо воно встановлене.

Якщо Xcode не встановлено, ідентифікатор можна знайти в iTunes. Натисніть піктограму пристроїв і виберіть свій пристрій.

Починаючи з Xcode 7, будь-хто може встановити Xcode і безкоштовно розробляти застосунки на пристрої. Реєструватися в iOS Developer Program не потрібно. Натомість Xcode автоматично видасть вам сертифікат розробника (чинний протягом 1 року) і профіль підготовки для вашого застосунку (чинний протягом одного тижня) на конкретному пристрої.
Single View App.Team (створену для вас автоматично) і задайте ідентифікатор пакета застосунку.Запишіть ідентифікатор пакета, оскільки в проєкті Defold потрібно використовувати той самий ідентифікатор.
Переконайтеся, що Xcode створив Provisioning Profile і Signing Certificate для застосунку.

Переконавшись, що застосунок працює, знайдіть його на диску. Шлях до збірки можна побачити у звіті про збирання в Report Navigator.

Знайдіть застосунок, натисніть його правою кнопкою миші й виберіть Show Package Contents.

embedded.mobileprovision у зручне для вас місце на диску.
Цей файл профілю підготовки разом з ідентифікатором підписування коду можна використовувати для підписування застосунків у Defold протягом одного тижня.
Коли термін дії профілю підготовки закінчиться, потрібно знову зібрати застосунок у Xcode й отримати новий тимчасовий файл профілю підготовки, як описано вище.
Маючи ідентифікатор підписування коду та профіль підготовки, ви можете створити в редакторі окремий пакет застосунку для своєї гри. Просто виберіть у меню Project ▸ Bundle... ▸ iOS Application....

Виберіть ідентифікатор підписування коду та вкажіть файл профілю підготовки для мобільного пристрою. Виберіть архітектуру пристрою arm64-ios і, за потреби, архітектуру симулятора x86_64-ios, а також варіант збірки (Debug або Release). За бажанням можна зняти прапорець Sign application, щоб пропустити підписування й виконати його вручну пізніше.
Ви обов’язково маєте зняти прапорець Sign application, коли тестуєте гру в симуляторі iOS. Інакше застосунок можна буде встановити, але він не запуститься.
Натисніть Create Bundle, після чого вам буде запропоновано вказати місце на комп’ютері, де буде створено пакет.

Піктограму застосунку, розкадрування екрана запуску (storyboard) та інші параметри задають у файлі налаштувань проєкту game.project у розділі iOS.
Вбудований файл Info.plist для iOS містить сервіс Bonjour та опис використання локальної мережі, потрібні для автоматичного виявлення редактором цільових пристроїв у збірках, які не призначені для випуску. Власний Info.plist замінює цей вбудований базовий маніфест. Якщо для налагоджувальної збірки використовується власний маніфест і вам потрібні виявлення цільових пристроїв, профілювання, гаряче перезавантаження або потокове передавання журналу через локальну мережу, додайте такі записи:
{{^variant_release}}
<key>NSBonjourServices</key>
<array>
<string>_defold._tcp</string>
</array>
<key>NSLocalNetworkUsageDescription</key>
<string>Discover Defold targets on the local network.</string>
{{/variant_release}}
Умова Mustache виключає записи для виявлення з пакетів випуску. iOS показує користувачеві рядок з описом використання; його можна змінити або локалізувати. Видаляйте умову лише тоді, коли сам застосунок випуску використовує той самий сервіс Bonjour і функції локальної мережі.
Під час пакування гри потрібно вибрати, який тип рушія ви хочете використовувати. Є три основні варіанти:
Ці різновиди також називають Build variants
Якщо вибрати Project ▸ Build, ви завжди отримаєте налагоджувальну версію.
Цей тип виконуваної програми зазвичай використовують під час розробки гри, оскільки він містить кілька корисних функцій налагодження:
print() і нативних розширень, які використовують dmLogInfo(), dmLogError() тощо. Дізнайтеся, як читати ці журнали, у посібнику з журналів гри та системи.У цьому варіанті функції налагодження вимкнено. Його слід вибирати, коли гра готова до випуску в магазині застосунків або до поширення серед гравців іншим способом. Випускати гру з увімкненими функціями налагодження не рекомендовано з кількох причин:
Ця виконувана програма працює без графіки та звуку. Тож ви можете запускати тести модулів або димові тести гри на сервері CI чи навіть використовувати її як ігровий сервер у хмарі.
Щоб установити й запустити зібраний пакет, скористайтеся прапорцями Install on connected device і Launch installed app у діалоговому вікні Bundle редактора:

Для роботи цієї функції потрібно встановити засіб командного рядка ios-deploy. Найпростіше встановити його за допомогою Homebrew:
$ brew install ios-deploy
Якщо редактор не може визначити шлях установлення засобу ios-deploy, укажіть його в налаштуваннях редактора.
Файл розкадрування створюють за допомогою Xcode. Запустіть Xcode і створіть новий проєкт. Виберіть iOS і Single View App:

Натисніть Next і перейдіть до налаштування проєкту. Введіть назву продукту в полі Product Name:

Натисніть Create, щоб завершити процес. Проєкт створено, і тепер можна перейти до створення розкадрування:

Перетягніть зображення в проєкт, щоб імпортувати його. Потім виберіть Assets.xcassets і перетягніть зображення в Assets.xcassets:

Відкрийте LaunchScreen.storyboard і натисніть кнопку з плюсом (+). Введіть imageview у діалоговому вікні, щоб знайти компонент ImageView.

Перетягніть компонент Image View на розкадрування:

У розкривному списку Image виберіть зображення, яке ви раніше додали до Assets.xcassets:

Розташуйте зображення та внесіть інші потрібні зміни, наприклад додайте Label або інший елемент інтерфейсу. Коли завершите, виберіть активну схему Any iOS Device (arm64) (або Generic iOS Device) і виберіть Product ▸ Build. Defold підтримує iOS 15.0 і новіші версії на 64-бітних пристроях, тому мінімальна версія iOS для розгортання має бути 15.0 або новішою. Дочекайтеся завершення збирання.
Якщо ви використовуєте зображення в розкадруванні, вони не потраплять до LaunchScreen.storyboardc автоматично. Скористайтеся полем Bundle Resources у game.project, щоб включити ресурси.
Наприклад, створіть у проєкті Defold папку LaunchScreen, а в ній — папку ios (папка ios потрібна, щоб ці файли включалися лише до пакетів для iOS), а потім розмістіть свої файли в LaunchScreen/ios/. Додайте цей шлях у Bundle Resources.

Наостанок скопіюйте скомпільований файл LaunchScreen.storyboardc до проєкту Defold. Відкрийте у Finder вказане нижче розташування та скопіюйте файл LaunchScreen.storyboardc до проєкту Defold:
/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Intermediates.noindex/YOUR-PRODUCT-NAME.build/Debug-iphonesimulator/YOUR-PRODUCT-NAME.build/Base.lproj/LaunchScreen.storyboardc
Користувач форуму Sergey Lerg підготував відеоурок із демонстрацією цього процесу.
Маючи файл розкадрування, ви можете вказати посилання на нього в game.project.
Apple рекомендує використовувати каталог ресурсів для керування піктограмами застосунку. Фактично це єдиний спосіб надати піктограму для сторінки застосунку в App Store. Каталог ресурсів створюють так само, як і розкадрування, за допомогою Xcode. Запустіть Xcode і створіть новий проєкт. Виберіть iOS і Single View App:

Натисніть Next і перейдіть до налаштування проєкту. Введіть назву продукту в полі Product Name:
![]()
Натисніть Create, щоб завершити процес. Проєкт створено, і тепер можна перейти до створення каталогу ресурсів:
![]()
Перетягніть зображення в порожні комірки, що відповідають різним підтримуваним розмірам піктограм:
![]()
Не додавайте піктограм для Notifications, Settings або Spotlight.
Коли завершите, виберіть активну схему Build -> Any iOS Device (arm64) (або Generic iOS Device) і виберіть Product -> Build. Дочекайтеся завершення збирання.
Обов’язково виконуйте збирання для Any iOS Device (arm64) або Generic iOS Device, інакше під час завантаження збірки виникне помилка ERROR ITMS-90704.
![]()
Наостанок скопіюйте скомпільований файл Assets.car до проєкту Defold. Відкрийте у Finder вказане нижче розташування та скопіюйте файл Assets.car до проєкту Defold:
/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Products/Debug-iphoneos/Icons.app/Assets.car
Маючи файл каталогу ресурсів, ви можете вказати посилання на нього та піктограми в game.project:
![]()
На піктограму App Store не потрібно посилатися з game.project. Вона автоматично видобувається з файлу Assets.car під час завантаження в iTunes Connect.
Редактор записує файл .ipa, який є пакетом застосунку iOS. Щоб установити файл на пристрій, можна скористатися одним із таких інструментів:
Devices and Simulatorsios-deployApple Configurator 2 з macOS App StoreТакож можна використовувати засіб командного рядка xcrun simctl для роботи із симуляторами iOS, доступними через Xcode:
# show a list of available devices
xcrun simctl list
# boot an iPhone X simulator
xcrun simctl boot "iPhone X"
# install your.app to a booted simulator
xcrun simctl install booted your.app
# launch the simulator
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app
Маніфест конфіденційності — це список властивостей, у якому зазначено типи даних, що їх збирає ваш застосунок або сторонній SDK, а також API, використання яких потребує обґрунтування. Для кожного типу зібраних даних і кожної категорії таких API застосунок або сторонній SDK має вказати причини у файлі маніфесту конфіденційності, включеному до його пакета.
Defold надає стандартний маніфест конфіденційності через поле Privacy Manifest у файлі game.project. Під час створення пакета застосунку цей маніфест буде об’єднано з усіма маніфестами конфіденційності залежностей проєкту та включено до пакета застосунку.
Докладніше про маніфести конфіденційності читайте в офіційній документації Apple.
Коли ви подаєте гру до App Store, вас попросять надати інформацію про відповідність вимогам експортного контролю щодо використання шифрування у грі. Apple пояснює, чому це потрібно:
«Коли ви подаєте застосунок до TestFlight або App Store, ви завантажуєте його на сервер у Сполучених Штатах. Якщо ви розповсюджуєте застосунок за межами США або Канади, на нього поширюється експортне законодавство США незалежно від місця реєстрації вашої юридичної особи. Якщо застосунок використовує шифрування, звертається до нього, містить, реалізує або включає його, це вважається експортом програмного забезпечення для шифрування. Отже, на застосунок поширюються вимоги експортного контролю США, а також вимоги імпортного контролю країн, у яких ви розповсюджуєте застосунок».
Ігровий рушій Defold використовує шифрування для таких цілей:
Ці способи використання шифрування в рушії Defold звільнені від вимог щодо документів експортного контролю відповідно до законодавства Сполучених Штатів і Європейського Союзу. Більшість проєктів Defold також матимуть таке звільнення, але додавання інших криптографічних методів може змінити цей статус. Ви відповідаєте за те, щоб ваш проєкт відповідав вимогам цих законів і правилам App Store. Докладніше див. в огляді вимог експортного контролю Apple.
Якщо ви вважаєте, що ваш проєкт має таке звільнення, установіть для ключа ITSAppUsesNonExemptEncryption значення False у файлі Info.plist проєкту. Докладніше див. в посібнику Маніфести застосунків.
В: Переконайтеся, що ідентифікатор пакета у вашому проєкті Defold збігається з ідентифікатором у проєкті Xcode, який ви використовували для створення мобільного профілю підготовки.
В: Із розділу «Перевірка прав доступу зібраного застосунку»:
codesign -d --ent :- /path/to/the.app
В: Із розділу «Перевірка прав доступу профілю»:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision