Руководство пользователя
Nursery — нативное приложение для macOS, которое проводит iOS-приложение через весь путь публикации в App Store Connect: сертификаты, создание записи, метаданные, скриншоты, сборка и заливка билда — из одного окна.
О приложении
Nursery автоматизирует рутинную часть публикации. Вы добавляете приложение (вручную или из Notion), один раз входите в Apple-аккаунт — дальше Nursery сам выпускает сертификаты и профили, создаёт приложение в App Store Connect, заливает метаданные сразу на все локали, подгоняет и загружает скриншоты, собирает IPA из исходников и отправляет билд в ASC.
Два действия намеренно остаются за вами: привязка билда к версии и отправка на ревью (Submit for Review). Рутину забирает машина — решение о релизе остаётся за человеком.
Как Nursery общается с Apple
Используются два независимых механизма — понимание разницы снимает большинство вопросов «почему не работает»:
- Cookie-сессия — «браузерная» авторизация, попадает в Nursery через расширение «Nursery Cookie Sync» (раздел 7). Живёт ограниченное время, её нужно периодически обновлять повторным входом.
- API-ключ App Store Connect (файл
.p8) — Nursery создаёт его сам при первом выпуске сертификатов. Не протухает: скриншоты, заливка билдов, версии и Submit работают по нему даже когда cookie-сессия давно истекла.
Требования
- Mac с macOS (приложение нативное, не web-обёртка).
- Xcode — только если собираете IPA из исходников. Для всего остального (метаданные, скриншоты, заливка готового
.ipa) Xcode не нужен. - Браузер на базе Chromium (Chrome, Edge, Brave, Arc и т.п.) — для расширения «Nursery Cookie Sync». Safari и Firefox не поддерживаются.
~/Library/Application Support/sv.NurseryApp/. Никакого облака: чем делиться и с кем — решаете вы (см. раздел 17).Установка и лицензия
- Установите приложениеСкачайте установщик
.pkgс сайта и пройдите стандартную установку. Обновления дальше приходят автоматически (см. раздел 18). - Активируйте лицензиюПри первом запуске откроется окно «Активируйте NurseryApp». Введите лицензионный ключ формата
NRSY-XXXX-XXXX-XXXX-XXXXи нажмите «Активировать» — дефисы подставляются автоматически. - Или попробуйте бесплатноКнопка «Попробовать 3 дня» включает пробный период — без ключа и без карты. Триал выдаётся один раз на каждый Mac: переустановка приложения его не сбрасывает.
Ключ выдаётся лично — написать за покупкой или продлением можно в Telegram: @appmakeios. Статус лицензии, оставшиеся дни и кнопка «Обновить статус» — в настройках, карточка «Аккаунт и лицензия».
Как работает привязка
- Ключ привязывается к Mac. Командные ключи активируются на нескольких машинах — лимит мест зашит в ключ. При его превышении появится «Достигнут лимит устройств для этого ключа» — напишите, чтобы освободить место или расширить лимит.
- Сменили Mac? Активация на новой машине сообщит, что ключ привязан к другому Mac, — перепривязка делается на стороне разработчика, просто напишите в Telegram.
- Офлайн-режим. Лицензия перепроверяется по сети фоново; без связи с сервером приложение продолжает работать до 14 дней. Дольше — появится окно блокировки с кнопкой «Повторить проверку»: подключитесь к интернету и нажмите её.
Окно «Доступ заблокирован» всегда объясняет причину (истёк срок, отозван ключ, слишком долго офлайн, ключ привязан к другой машине) и позволяет ввести новый ключ или проверить обновления, не заходя в приложение.
Быстрый старт: от нуля до залитого билда
Полный путь для нового приложения выглядит так:
- Добавьте приложениеКнопка «Добавить приложение» внизу сайдбара (или «Notion» / «Вручную», если подключён Notion). Достаточно названия и Bundle ID — раздел 6.
- Войдите в Apple-аккаунтКнопка «Войти» в шапке — вход через браузерное расширение «Nursery Cookie Sync», логин и пароль в Nursery не вводятся — раздел 7.
- Задайте прокси (или включите Direct Mode)Каждому аккаунту — свой прокси: карточка «Прокси» на табе «Главная» — раздел 8.
- Запустите «Быстрый залив»Кнопка «Быстрый залив» в шапке открывает визард из пяти шагов: capabilities, метаданные, скриншоты, исходники, подтверждение. Дальше всё выполняется автоматически — раздел 15.
- Прикрепите билд и отправьте на ревьюКогда билд обработается в ASC, на табе «Публикация» нажмите «Прикрепить билд», затем «Submit» — раздел 14.
Каждый шаг можно выполнять и по отдельности, со своих табов — «Быстрый залив» лишь прогоняет ту же цепочку одной кнопкой и пропускает уже сделанное.
В правом нижнем углу окна висит карточка «Первые шаги» — чеклист из пяти пунктов, галочки в котором тикаются сами по мере продвижения. Когда всё сделано, она исчезает (или скройте её кнопкой «Скрыть подсказку»).
Интерфейс
Сайдбар: список приложений
- Поиск — по имени, Bundle ID и номеру приложения (можно с решёткой:
#894). - Сортировка — кнопка со стрелками: по имени или дате создания, по возрастанию/убыванию.
- Группы — приложения можно раскладывать по цветным группам (секции сворачиваются). Группа назначается при добавлении, через контекстное меню («Группа») или массово: пункт «Выбрать» включает режим множественного выбора с действиями «Группа» и «Удалить» для всех отмеченных.
- Статус — цветная точка справа в каждой строке: авторизован (зелёная), сессия истекла (жёлтая), не авторизован (серая), идёт операция.
- Контекстное меню — «Свойства…» (имя, Bundle ID, email аккаунта, основная локаль, прокси), «Группа», «Удалить».
Табы выбранного приложения
| Таб | Горячая клавиша | Что там |
|---|---|---|
| «Главная» | ⌘1 | Прогресс, аккаунт, прокси, API-ключ — раздел 10 |
| «Метаданные» | ⌘2 | Тексты, локали, категории, цена, рейтинг — раздел 11 |
| «Скриншоты» | ⌘3 | Устройства, источники, заливка — раздел 12 |
| «Сборка» | ⌘4 | Исходники, сборка IPA, библиотека билдов — раздел 13 |
| «Публикация» | ⌘5 | Версии в ASC, привязка билда, Submit — раздел 14 |
В шапке над табами: статус авторизации, Bundle ID, кнопка «Открыть в Notion» (если приложение привязано к карточке), аккаунт-капсула со входом/выходом и кнопка «Быстрый залив». Слева от табов — чип текущей версии в ASC и кнопка + для создания новой версии.
Панель операций
Открывается кнопкой в правом верхнем углу (⌘0). Это история всего, что Nursery делал с этим приложением: каждая операция — карточка с прогрессом, статусом («В процессе», «В очереди», «Успешно», «Ошибка», «Отменено») и разворачиваемым логом. Здесь можно:
- отменить идущую операцию или убрать её из очереди;
- развернуть «Логи» и скопировать их;
- для упавшей операции — нажать «Отправить лог»: короткое описание, что вы делали, плюс полный лог уходят разработчику;
- очистить историю целиком («Очистить историю»).
Уведомления
Об окончании операции сообщает всплывающий тост в окне («Сертификаты созданы», «IPA собран», «Скриншоты загружены»…). Если окно Nursery в этот момент не активно, вместо тоста придёт системное уведомление macOS со звуком — можно спокойно уходить в другое приложение на время долгой сборки. Разрешение на уведомления запрашивается один раз при первом запуске.
Настройки
Кнопка «Настройки» — внизу сайдбара. В шапке окна: переключатель темы (светлая/тёмная) и «Язык интерфейса» — Системный, English, Русский, Українська (после смены Nursery предложит перезапуститься).
- «Аккаунт и лицензия» — статус ключа, оставшиеся дни, «Обновить статус», продление через Telegram.
- «Интеграции» — подключение Notion-токена (раздел 16).
- «Сеть» — тумблер «Direct Mode»: разрешить операции без прокси. Настройка глобальная, действует на все приложения. Осторожно: Apple увидит реальный IP устройства (раздел 8).
- «Обновления» — текущая версия и кнопка «Проверить обновления».
- «Браузерное расширение» — скачать «Nursery Cookie Sync» и инструкция по установке (раздел 7).
- «Обратная связь» — написать разработчику прямо из приложения.
- «Показать онбординг» — заново показать вступительные слайды и чеклист «Первые шаги».
Добавление приложения
Внизу сайдбара: если Notion не подключён — одна кнопка «Добавить приложение» (ручной режим); если подключён — две: «Notion» и «Вручную».
Вручную
- «Название» — обязательно.
- Bundle ID — например
com.example.myapp. Кнопка с волшебной палочкой сгенерирует его из названия. - App Number — необязательный порядковый номер для своей нумерации (показывается в сайдбаре как
#894, по нему работает поиск). - Proxy URL — можно задать сразу или позже.
- «Группа» — существующая или «+ Новая группа…».
Из Notion
Вставьте «URL страницы или ID» карточки приложения — Nursery подтянет всё, что найдёт в карточке, и сразу настроит приложение:
- название, Bundle ID, номер, Issuer ID;
- App ID — если приложение уже создано в App Store Connect и его ID записан в карточке, Nursery сразу пометит шаг «Приложение создано» выполненным и разблокирует метаданные;
- API-ключ — файл
AuthKey_*.p8с карточки скачается автоматически; - сертификаты — если на странице лежит
cert.zip, запустится автоматический импорт (тост «Найден cert.zip в Notion — импортирую…»); - если Bundle ID в карточке пуст, Nursery сгенерирует его и запишет обратно в Notion.
Структура карточки — в разделе 16.
Вход в Apple-аккаунт
Nursery не спрашивает логин и пароль от Apple ID. Вход выполняется переносом cookie-сессии из браузера — одним нажатием в расширении «Nursery Cookie Sync». Расширение передаёт cookies только на локальный адрес вашего же Mac (порт 5556) и принимает только домены Apple — наружу ничего не уходит.
Установка расширения (один раз)
- Скачайте папку расширенияНастройки → «Браузерное расширение» → «Скачать расширение». Nursery положит папку
Nursery-Cookie-Syncв~/Downloadsи покажет её в Finder. - Подключите её в ChromeОткройте
chrome://extensions→ включите Developer Mode → Load unpacked → выберите скачанную папку.
Вход
Порядок важен: сначала «Войти» в Nursery, потом «Sync Cookies» в браузере. Приёмник cookies на порту 5556 работает только пока открыто окно входа — если нажать кнопку расширения без него, получите «Server unreachable».
- Нажмите «Войти» в NurseryКнопка в шапке приложения. Откроется окно «Вход через cookies» со статусом «Ожидание cookies…» — с этого момента Nursery слушает и ждёт.
- Залогиньтесь на appstoreconnect.apple.comВ браузере, под нужным аккаунтом — как обычно, с двухфакторкой. Если уже залогинены — просто откройте вкладку ASC.
- Нажмите иконку расширения → «Sync Cookies»В popup будет видно состояние: «Apple session found (N cookies)» — можно жать; «No Apple session…» — сначала войдите на сайт. При успехе — «Synced! <email>», окно входа в Nursery закроется само, статус сменится на «Авторизован».
После входа на табе «Главная» появится карточка «Apple Account» с именем и Team ID.
Жизнь сессии
- Nursery фоново проверяет живость сессий примерно каждые 15 минут. Когда Apple завершает сессию, точка статуса становится жёлтой — «Сессия истекла».
- Это нормально и ожидаемо: cookie-сессии Apple короткоживущие. Автоматического перелогина нет — повторите вход (те же «Войти» → «Sync Cookies»).
- Протухшая сессия не останавливает работу: всё, что ходит по API-ключу (скриншоты, заливка билда, версии, Submit), продолжает работать — см. таблицу ниже.
Кнопка «Выйти» — два разных поведения
- Сертификаты ещё не созданы: «Выйти» полностью сбрасывает аккаунт у приложения — удаляются сессия, email, ключи и файлы сертификатов. Можно привязать другой Apple ID.
- Сертификаты уже созданы: «Выйти» только отзывает текущую сессию. Email, сертификаты и ключи сохраняются, аккаунт закрепляется за приложением — сменить Apple ID уже нельзя, только войти в тот же заново.
Несколько аккаунтов
Cookies хранятся отдельно у каждого приложения — внутри Nursery аккаунты изолированы. Но источник cookies — браузер, а он держит одну активную сессию Apple на профиль. Поэтому:
- заводя второй аккаунт, сначала выйдите на appstoreconnect.apple.com из первого и войдите под вторым — иначе расширение синхронизирует не тот аккаунт;
- удобнее — отдельный профиль браузера под каждый Apple-аккаунт: сессии живут параллельно, и «Sync Cookies» жмёте из нужного профиля (расширение придётся подключить в каждом).
Что требует cookie-сессию, а что API-ключ
| Операция | Что нужно |
|---|---|
| Создание сертификатов (первый раз) | Cookie-сессия (заодно создаётся API-ключ) |
| Создание приложения в ASC | Cookie-сессия |
| Метаданные («Синхронизировать с ASC») | API-ключ и cookie-сессия (часть шагов — App Privacy, платформы, DSA — идёт по cookie) |
| Скриншоты | Только API-ключ |
| Сборка IPA | Ничего из этого — локальная операция |
| Заливка IPA, привязка билда, новая версия, Submit | Только API-ключ |
| Синк локалей из ASC | Только API-ключ |
Прокси и Direct Mode
Каждому приложению (аккаунту) можно назначить собственный прокси — весь трафик Nursery к Apple для этого аккаунта пойдёт через него. Задаётся при добавлении приложения, в «Свойства…» или на табе «Главная»: карточка «Прокси» → «Добавить» / «Изменить».
Поддерживаются SOCKS5 и HTTP, форматы записи:
socks5://user:pass@host:port
http://user:pass@host:port
user:pass@host:port (SOCKS5 по умолчанию)
host:port:user:pass
Кнопка «Проверить» делает два запроса — напрямую и через прокси — и показывает оба IP. Если они совпали, увидите предупреждение «Прокси не меняет IP — возможно, не работает». Проверяйте прокси до запуска операций.
Как устроена защита
- Обычные операции (создание приложения, метаданные, скриншоты, заливка билда) ходят через прокси на уровне самого Nursery — тут всё просто.
- Сборка IPA — особый случай: инструменты Apple (xcodebuild и другие) игнорируют настройки прокси. Поэтому на время сборки Nursery через фоновый помощник заворачивает трафик на уровне системы. Помощник ставится автоматически; macOS при первой установке попросит разрешить его в Системные настройки → Основные → «Объекты входа и расширения» (Allow in the Background).
- Если помощник выключен, а прокси задан, на «Главной» появится баннер «Защита прокси отключена» с кнопкой «Открыть настройки» — она ведёт прямо в нужный раздел.
- Если защиту не удалось включить в момент сборки, Nursery остановится и спросит: «Отменить сборку» (безопасный выбор, по Enter) или «Продолжить без защиты» — тогда трафик сборки пойдёт с реального IP.
Direct Mode
Тумблер «Direct Mode» в настройках (карточка «Сеть») снимает единственное требование — «без прокси операции запускать нельзя». Всё остальное (вход, сессии, ключи) работает как обычно, но запросы идут с реального IP устройства — на «Главной» об этом напоминает оранжевый баннер «Direct mode включён». Без прокси и без Direct Mode операции заблокированы (красный баннер «Прокси не настроен»).
Сертификаты
Всё управление — на табе «Главная», карточка «Прогресс», строка «Сертификаты». Требуются вход в аккаунт и настроенный прокси (или Direct Mode).
Создание
Кнопка «Создать» открывает окно «Capabilities для Bundle ID»:
- Список capabilities — отметьте нужные (есть поиск). Push Notifications включён по умолчанию (можно снять); In-App Purchase и Game Center помечены «всегда вкл» — их включает сам Apple.
- «Notification Service Extension» — тоггл добавляет дополнительный таргет
<bundle>.NotificationServiceдля rich-push-уведомлений (картинки в пушах): Nursery создаст для него отдельный Bundle ID и профиль. После создания сертификатов тоггл блокируется.
По кнопке «Создать сертификаты» Nursery выполняет цепочку: API-ключ ASC (если ещё нет) → регистрация Bundle ID → настройка capabilities → distribution-сертификат с приватным ключом → provisioning-профиль. Прогресс и лог — в панели операций. Если приложение привязано к Notion, готовый cert.zip и служебные поля (Team ID, Issuer ID) автоматически сохранятся в карточку.
Умное переиспользование
Nursery не плодит дубли на аккаунте:
- API-ключ — один на команду (лимит Apple). Если у другого приложения того же аккаунта ключ уже есть, он просто переиспользуется.
- Distribution-сертификат — если в аккаунте уже есть сертификат, чей приватный ключ лежит у другого приложения в Nursery, файлы скопируются, новый выпускаться не будет (в логе «♻️ Переиспользуем существующий сертификат»).
- Лимит Apple — 3 distribution-сертификата. Если все слоты заняты чужими (не созданными в Nursery) сертификатами, Nursery отзовёт сторонний, чтобы освободить место, — это видно в логе. Учтите это, если тем же аккаунтом подписываете что-то вне Nursery.
Повторный запуск безопасен: когда сертификаты уже созданы, «Управление» → «Capabilities» работает в режиме обновления — меняются только capabilities и перевыпускается профиль, сертификат и ключи не трогаются. Capabilities, включённые вами вручную в Developer Portal, Nursery не отключает.
Импорт
Если сертификаты уже есть (сделаны коллегой или в другом инструменте) — кнопка «Импорт». Источники: страница Notion (Nursery сам найдёт cert.zip) или вручную — перетащите файл, папку или .zip с файлами .cer / .key / .mobileprovision / .p12 / .p8.
- Поле Issuer ID нужно только для заливки в ASC (метаданные, билды); для локальной сборки — не обязательно. Его нет ни в одном файле, поэтому вводится отдельно.
- Один лишь
.p8(API-ключ) сертификатами не считается — для сборки нужны.cer+.key+.mobileprovision. - Из
.mobileprovisionNursery сам вытащит Team ID и Bundle ID.
Файлы в папке сертификатов
| Файл | Что это |
|---|---|
distribution.cer | Distribution-сертификат Apple |
<имя>.key | Приватный ключ сертификата — существует только у вас |
distribution.p12 | Сертификат + ключ одним файлом (для Keychain; пароль пустой) |
<имя>.mobileprovision | Provisioning-профиль (+ отдельный для Notification Service Extension, если включён) |
AuthKey_<KeyID>.p8 | API-ключ App Store Connect |
Меню «Управление»: «Папка» открывает эту папку в Finder, «Экспорт .zip» сохраняет всё одним архивом <bundleId>-cert.zip — так сертификаты передаются коллеге.
.key создаётся локально и никуда не отправляется. Если удалить приложение из Nursery или потерять папку — восстановить ключ невозможно, только выпускать сертификат заново. Для важных приложений сделайте «Экспорт .zip» и положите архив в надёжное место.Таб «Главная»
Домашний таб приложения. Сверху может показываться баннер о состоянии сети («Прокси не настроен», «Direct mode включён», «Защита прокси отключена»). Ниже — карточки:
- «Прогресс» — три ключевых шага со статусами и кнопками действий:
- «Сертификаты» — создать / импортировать / управлять (раздел 9);
- «Приложение создано» — кнопка «Создать» регистрирует приложение в App Store Connect: запись с вашим Bundle ID, названием и основной локалью, плюс первая версия 1.0. До этого шага таб «Метаданные» закрыт;
- «Метаданные заполнены» — статус синхронизации метаданных.
- «Apple Account» — имя и Team ID вошедшего аккаунта.
- «App Store Connect API» — Issuer ID, Key ID и статус P8-ключа. Ключ создаётся автоматически при выпуске сертификатов (или приходит с импортом) и используется для всех API-операций: метаданных, скриншотов, заливки билда.
- «Прокси» — текущий прокси аккаунта, кнопки изменения и проверки.
Метаданные
Таб открывается после создания приложения в ASC. Если приложение добавлено из Notion, тексты подтянутся из карточки автоматически — но только в пустые поля, ручные правки не перетираются.
Локали
Карточка «Локали»: чипы всех языков стора. Основная локаль помечена бейджем «Основная», прочие удаляются крестиком, новые добавляются чипом «Добавить локаль». Переключение чипа показывает форму этой локали.
Кнопка с круговой стрелкой рядом с заголовком — «Подтянуть локали из App Store Connect»: добавляет локали, которые есть в ASC, но отсутствуют локально, вместе с их текстами. Существующие локальные данные при этом не перезаписываются. Нужен только API-ключ; работает повторно; та же кнопка есть на табе «Скриншоты». Полезно для приложений, которые уже живут в сторе, и при переносе на другой Mac.
Поля и лимиты
Форма локали: «Подзаголовок», «Ключевые слова» (через запятую), «URL политики конфиденциальности», «Описание», для обновлений — «Что нового» (у версии 1.0 поле скрыто — Apple его игнорирует). Счётчики лимитов App Store:
| Поле | Лимит |
|---|---|
| Название приложения | 30 |
| Подзаголовок | 30 |
| Ключевые слова | 100 |
| Описание / Что нового | 4000 |
| URL | 255 |
При превышении счётчик краснеет, и заливка блокируется — тултип кнопки покажет, какое поле и в какой локали не влезло. Название приложения одно на все локали.
Карточки настроек
- «Основная категория» (обязательна) и «Дополнительная категория».
- «Доступность по регионам» — плитка «Все страны» или регионы; стрелка на плитке региона открывает выбор отдельных стран.
- «Платформы» — чекбоксы «Mac App Store» и «Vision Pro»: публиковать ли iOS-приложение также на этих платформах.
- «Соответствие (EU DSA)» — чекбокс «Объявить аккаунт „не трейдером"»: при заливке метаданных Nursery выставит trader status аккаунта в «не трейдер» (Business → Compliance). Действие на уровне аккаунта, повторный запуск безвреден; выключенный чекбокс статус не трогает вообще. Включайте, только если вы действительно не трейдер по EU DSA. Требует живой cookie-сессии.
- «Возрастной рейтинг» — анкета Apple. Можно завести шаблоны и назначить один дефолтным; без шаблона применяется рейтинг 4+. Итоговую отметку (4+/9+/12+/17+) App Store вычисляет из ответов анкеты.
- «Цены и доступность» — цена (по умолчанию Free; базовая территория — США, остальные цены Apple считает сам).
- «Контакты для обзора» — контакты для команды ревью Apple. Имя, фамилия и email подставляются из аккаунта в пустые поля автоматически; телефон Nursery сначала пытается взять из данных Developer-аккаунта, а кнопка «Перегенерировать» создаёт корректный номер US-формата. Если ASC отверг номер, контакты сохранятся без телефона — в логе будет подсказка вписать его вручную. Демо-аккаунт (Username/Password) указывайте, если для ревью нужен вход в приложение.
Заливка
Кнопка «Синхронизировать с ASC» отправляет всё по шагам: copyright (генерируется автоматически из имени владельца аккаунта) и тип релиза → категории → тексты локалей → цена → доступность → права на контент → возрастной рейтинг → контакты ревью → App Privacy → платформы → DSA. Тип релиза ставится «вручную» — после аппрува Apple версию выпускаете вы, а не автомат.
Шаги независимы: если часть не прошла, появится окно «Метаданные залиты не полностью» со списком — исправьте причину и запустите синхронизацию ещё раз, успешные шаги повторятся безболезненно. Для кнопки нужны и API-ключ, и живая cookie-сессия (см. таблицу в разделе 7) — если чего-то не хватает, тултип подскажет.
Скриншоты
Устройства
Карточка «Устройства» — отметьте, под какие экраны загружать:
| Устройство | Целевой размер (портрет) | Архив в Notion |
|---|---|---|
| iPhone 6.9″ | 1320 × 2868 | iphone69.zip |
| iPhone 6.5″ | 1242 × 2688 | iphone65.zip |
| iPhone 6.3″ | 1206 × 2622 | iphone63.zip |
| iPhone 6.1″ | 1170 × 2532 | iphone61.zip |
| iPad 13″ | 2048 × 2732 | ipad13.zip |
Точно попадать в размеры не нужно — Nursery сам приведёт картинки к целевым при заливке. Но пропорции лучше соблюдать: подгонка выполняется растяжением под целевой размер, картинка с сильно другим соотношением сторон исказится. Всё перекодируется в JPEG, прозрачность (alpha) при этом теряется.
Источники
Для каждого устройства скриншоты берутся из одного из двух мест (локальный выбор всегда приоритетнее Notion):
- Notion — архив с соответствующим именем на странице приложения (бейдж в строке устройства показывает, найден ли он);
- Свои файлы — кнопка со стрелкой в лоток («Выбрать свои скриншоты: папку, .zip или изображения») или просто перетащите папку/архив/картинки на строку устройства. Вернуться к Notion-архиву можно кнопкой «Убрать локальный архив».
01.png, 02.png, 03.png… — иначе 10 встанет перед 2.Локали и заливка
Карточка «Локали» — в какие языки грузить (кнопки «Все» / «Никого»). При первой заливке по умолчанию отмечены все локали, при обновлении — ни одной (обычно апдейт скринов нужен не везде). Кнопка «Загрузить скриншоты» запускает процесс; статус-карточка покажет «Скриншоты загружены», когда всё готово.
Если выбранной локали ещё нет в ASC, скрины в неё не зальются (в логе «В ASC нет локализаций для… — сначала запусти Метаданные»). Порядок правильный: сначала метаданные (создают локали), потом скриншоты.
Сборка IPA
Для сборки из исходников нужен установленный Xcode (не только Command Line Tools — их Nursery распознаёт и попросит поставить полный Xcode и один раз его запустить). Собранные и импортированные .ipa хранятся локально в библиотеке билдов.
Исходники
Карточка «Исходники»: перетащите .xcodeproj / .xcworkspace или выберите через «Выбрать…». Поддерживаются и Flutter-проекты — укажите папку проекта, Nursery сам найдёт ios/Runner.xcworkspace и прогонит flutter pub get и flutter build перед сборкой (Flutter должен быть установлен). Если путь не выбран, а приложение привязано к Notion, Nursery возьмёт source.zip со страницы.
Входить в аккаунт в самом Xcode не нужно: Nursery подписывает билд вручную — сертификатом и профилями из своей папки, команду и профиль подставляет сам, аккуратно внося правки в проект только на время сборки и возвращая его в исходное состояние после.
Сборка и отправка
- «Собрать IPA» (⌘B) — собирает и подписывает. Требуются созданные (или импортированные) сертификаты.
- После сборки появится карточка «Готов к отправке» с кнопкой «Отправить в App Store Connect».
- Готовый
.ipaсо стороны — кнопка «Импортировать…» или перетащите файл прямо в окно.
Библиотека билдов
Карточка «Локальные IPA»: все билды с версией, размером и датой. У незагруженных — кнопка «Загрузить в ASC», у загруженных — зелёная пометка «Загружено». Контекстное меню: «Показать в Finder», «Удалить». После заливки билд уходит на обработку к Apple (обычно 10–30 минут) и появляется на табе «Публикация».
CFBundleShortVersionString, что у уже существующей в ASC версии (если она не в статусе черновика). Поднимите номер версии в проекте и пересоберите — иначе заливка остановится с понятным сообщением.Если сборка упала
Текст ошибки в панели операций содержит хвост лога xcodebuild — по нему видно причину. Частые случаи:
- «Отсутствуют файлы сертификата» — в папке нет
.cer/.key/.mobileprovision. Запустите «Создать сертификаты» (или проверьте, что импорт прошёл). - ValidateDevelopmentAssets — это не про подпись, а про сам проект: настройка
Development Assetsссылается на папку (обычно «Preview Content»), которой в исходниках нет. Создайте её или уберите ссылку в настройках таргета Xcode. - Command Line Tools вместо Xcode — установите полный Xcode из App Store и запустите его один раз.
Полный лог всегда можно скопировать в панели операций («Логи» → «Скопировать логи») или отправить разработчику кнопкой «Отправить лог».
Публикация
Таб «Публикация» — зеркало App Store Connect: все версии приложения с их статусами. Кнопка «Обновить» перечитывает состояние из ASC. Цвет бейджа подсказывает состояние: зелёный — версия в сторе (READY_FOR_SALE), красный — отклонена или невалидный бинарь, оранжевый — черновик, на ревью или в обработке.
Два финальных действия выполняются здесь — и только вручную:
- Прикрепите билдУ версии в статусе PREPARE_FOR_SUBMISSION нажмите «Прикрепить билд» (или «Изменить», чтобы заменить) и выберите билд. Он появляется в списке после обработки Apple. Заодно Nursery автоматически проставит декларацию шифрования (Export Compliance) — отдельно этим заниматься не нужно.
- Отправьте на ревьюКнопка «Submit» активна, только когда билд привязан. Подтверждение «Отправить версию X на ревью?». Учтите: откатить отправку через API нельзя — только Reject вручную в ASC.
Новая версия существующего приложения создаётся кнопкой + рядом с чипом версии в шапке: Nursery предложит следующий номер, вам останется подтвердить. Затем заполняйте «Что нового», скриншоты и билд как обычно.
Быстрый залив
Кнопка «Быстрый залив» в шапке приложения прогоняет весь конвейер одним запуском. Перед стартом — визард из пяти шагов:
- СертификатыОсновная локаль (фиксируется навсегда), тоггл Notification Service Extension, выбор capabilities.
- МетаданныеТа же форма, что на табе «Метаданные».
- СкриншотыУстройства, источники, локали.
- ИсходникиПроект для сборки (или source.zip из Notion).
- ПодтверждениеСписок «Что будет выполнено» и кнопка «Запустить».
Порядок выполнения: сертификаты → создание приложения в ASC → сборка IPA → далее параллельно: заливка метаданных, загрузка скриншотов и отправка IPA в ASC. Уже выполненные шаги распознаются автоматически: на них появляется баннер «Уже сделано», а в сводке — пометка, что они будут пропущены. Между шагами Nursery делает небольшие случайные паузы.
Во время работы кнопка в шапке превращается в «Отменить залив», а ручные операции по этому приложению на время блокируются. По завершении остаются два ручных действия — привязка билда и Submit (раздел 14). Защита прокси, напомним, включается только на стадии сборки; параллельная фаза идёт через обычный прокси.
Интеграция с Notion
Notion используется как хранилище ресурсов приложения: карточка = приложение, из неё Nursery подтягивает метаданные, исходники, сертификаты и скриншоты, а служебные поля дописывает обратно. Это удобный способ передавать материалы между менеджером и тем, кто заливает.
source.zip, cert.zip, архивы скриншотов) — с примерами в PDF со структурой карточки Notion.Подключение
Настройки → «Интеграции» → «Подключить». Создайте интеграцию на notion.so/my-integrations, выдайте ей доступ к нужным страницам (Share → пригласить интеграцию) и вставьте Internal Integration Token (ntn_…). Токен хранится в Keychain. Свой токен всегда приоритетнее токена из лицензии; если токен входит в вашу лицензию — подключать ничего не нужно.
Что Nursery читает и что пишет
- Читает: название,
Bundle ID,App ID,Team ID,Issuer ID, ссылку на политику конфиденциальности; блок Metadata (строкиКлюч: значение— Subtitle, Description, Keywords, Category); файлыsource.zip,cert.zipи архивы скриншотов. - Пишет обратно (по мере работы, без вашего участия): сгенерированный Bundle ID, Issuer ID, Team ID, App ID, email аккаунта и готовый
cert.zip. Статусы версий и публикации в Notion не пишутся.
Тексты из блока Metadata подтягиваются в метаданные только в пустые поля — ваши ручные правки не перетираются.
Обновления и поддержка
- Обновления приходят автоматически: Nursery проверяет их при каждом запуске и показывает окно «Доступна новая версия». Проверить вручную: Настройки → «Обновления» → «Проверить обновления». После установки приложение перезапустится само.
- Ошибка операции — в панели операций нажмите «Отправить лог»: опишите, что делали, полный лог прикрепится автоматически и уйдёт разработчику.
- Идеи и вопросы — карточка «Обратная связь» в настройках или Telegram @appmakeios.
Частые вопросы
В расширении «Server unreachable»
Приёмник cookies работает только пока в Nursery открыто окно входа. Сначала нажмите «Войти» в приложении, потом — «Sync Cookies» в браузере.
Расширение пишет «No Apple session»
Вы не залогинены на appstoreconnect.apple.com в этом браузере (или профиле). Откройте сайт, войдите, затем жмите «Sync Cookies».
Синхронизируется не тот аккаунт
Браузер держит одну активную сессию Apple на профиль. Выйдите из первого аккаунта на сайте и войдите под нужным — или используйте отдельный профиль браузера под каждый Apple ID (раздел 7).
Кнопка неактивна — почему?
Наведите курсор: у каждой заблокированной кнопки есть тултип с точной причиной («Сначала войдите через cookies», «API ключ не загружен», «Выбери хотя бы одно устройство» и т.п.). Это первый шаг диагностики почти любой ситуации.
Таб «Метаданные» размыт и не редактируется
Приложение ещё не создано в App Store Connect. Таб «Главная» → карточка «Прогресс» → строка «Приложение создано» → «Создать».
«Нет редактируемой версии в App Store Connect»
Метаданные заливаются в черновик (PREPARE_FOR_SUBMISSION). Для обновления живого приложения сначала создайте новую версию кнопкой + в шапке.
Статус «Сессия истекла»
Cookie-сессия Apple закончилась — это норма, повторите вход через расширение. Операции по API-ключу (скриншоты, заливка, версии, Submit) работают и без неё.
Залитый билд не виден на «Публикации»
Apple обрабатывает билд после загрузки — обычно 10–30 минут. Нажмите «Обновить» позже. Письмо от Apple о завершении обработки придёт на почту аккаунта.
Сборка идёт с реального IP, хотя прокси задан
Не поднялась системная защита сборки. Включите NurseryApp в Системных настройках → «Объекты входа и расширения», либо не соглашайтесь на «Продолжить без защиты», когда Nursery об этом спрашивает (раздел 8).
Нужен ли вход в Xcode?
Нет. Nursery подписывает сборку вручную своими сертификатами и профилями — аккаунт в Xcode и выбор Team не требуются.
Как перенести приложение на другой Mac?
Экспортируйте сертификаты («Экспорт .zip»), передайте .ipa-билды при необходимости, на новом Mac добавьте приложение с тем же Bundle ID и импортируйте архив. Тексты локалей (описания, ключевые слова, подзаголовки) можно подтянуть из ASC кнопкой синка локалей. А вот категории, цену, возрастной рейтинг и контакты для ревью синк не восстанавливает — их заполните заново. Лицензию, привязанную к старому Mac, поможет перепривязать разработчик.