Руководство пользователя
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 на Apple Silicon или Intel с macOS 15.6 или новее (приложение нативное, не web-обёртка).
- Xcode — только если собираете IPA из исходников. Для всего остального (метаданные, скриншоты, загрузка готового
.ipa) Xcode не нужен. - Браузер на базе Chromium (Chrome, Edge, Brave, Arc и т.п.) — для расширения «Nursery Cookie Sync» из Chrome Web Store. Safari и Firefox не поддерживаются.
~/Library/Application Support/sv.NurseryApp/. Никакого облака: чем делиться и с кем — решаете вы (см. раздел 17).Установка и лицензия
- Установите приложениеСкачайте установщик
.pkgс сайта и пройдите стандартную установку. Обновления дальше приходят автоматически (см. раздел 18). - Активируйте лицензиюПри первом запуске откроется окно «Активируйте NurseryApp». Введите лицензионный ключ формата
NRSY-XXXX-XXXX-XXXX-XXXXи нажмите «Активировать» — дефисы подставляются автоматически. - Или попробуйте бесплатноКнопка «Попробовать 3 дня» включает пробный период — без ключа и без карты. Триал выдаётся один раз на каждый Mac: переустановка приложения его не сбрасывает.
Ключ выдаётся лично — написать за покупкой или продлением можно в Telegram: @R_R_E_B. Статус лицензии, оставшиеся дни и кнопка «Обновить статус» — в настройках, карточка «Аккаунт и лицензия».
Как работает привязка
- Ключ привязывается к Mac. Командные ключи активируются на нескольких машинах — лимит мест зашит в ключ. При его превышении появится «Достигнут лимит устройств для этого ключа» — напишите, чтобы освободить место или расширить лимит.
- Сменили Mac? Активация на новой машине сообщит, что ключ привязан к другому Mac, — перепривязка делается на стороне разработчика, просто напишите в Telegram.
- Офлайн-режим. Лицензия перепроверяется по сети фоново; без связи с сервером приложение продолжает работать до 14 дней. Дольше — появится окно блокировки с кнопкой «Повторить проверку»: подключитесь к интернету и нажмите её.
- Продление. После оплаты ничего вводить заново не нужно: новый срок подтянется сам при фоновой проверке — даже если доступ уже был заблокирован из-за истёкшего срока. Чтобы не ждать, нажмите «Повторить проверку» в окне блокировки.
Окно «Доступ заблокирован» всегда объясняет причину (истёк срок, отозван ключ, слишком долго офлайн, ключ привязан к другой машине) и позволяет ввести новый ключ или проверить обновления, не заходя в приложение.
Быстрый старт: от нуля до загруженного билда
Полный путь для нового приложения выглядит так:
- Добавьте приложениеКнопка «Добавить приложение» внизу сайдбара (или «Notion» / «Вручную», если подключён Notion). Достаточно названия: пустой Bundle ID сгенерируется из него — раздел 6.
- Войдите в Apple-аккаунтКнопка «Войти» в шапке — вход через браузерное расширение «Nursery Cookie Sync», логин и пароль в Nursery не вводятся — раздел 7.
- Задайте прокси (или разрешите работу без прокси)Каждому аккаунту — свой прокси: карточка «Прокси» на вкладке «Главная» — раздел 8.
- Запустите «Быстрая загрузка»Кнопка «Быстрая загрузка» в шапке открывает визард из пяти шагов: сертификаты и язык, метаданные, скриншоты, исходники, подтверждение. Дальше всё выполняется автоматически — раздел 15.
- Прикрепите билд и отправьте на ревьюКогда билд обработается в ASC, на вкладке «Публикация» нажмите «Прикрепить билд», затем «Создать черновик» и «Отправить» — раздел 14.
Каждый шаг можно выполнять и по отдельности, со своих вкладок — «Быстрая загрузка» лишь прогоняет ту же цепочку одной кнопкой и пропускает уже сделанное.
При первом запуске Nursery показывает короткий онбординг — несколько слайдов о том, как всё устроено. Дальше по ходу работы у нужной кнопки появляется подсказка с пульсирующей рамкой: закрыли — больше не покажется. Если основная кнопка неактивна, причина написана прямо под ней (у остальных — в подсказке при наведении). Вернуть закрытые подсказки — Настройки → «Сбросить подсказки», онбординг — там же, «Показать онбординг».
Интерфейс
Сайдбар: список приложений
- Поиск — по имени, Bundle ID и номеру приложения (можно с решёткой:
#894). - Сортировка — кнопка со стрелками: по имени или дате создания, по возрастанию/убыванию.
- Группы — приложения можно раскладывать по цветным группам (секции сворачиваются). Группа назначается при добавлении, через контекстное меню («Группа») или массово: пункт «Выбрать» включает режим множественного выбора с действиями «Группа» и «Удалить» для всех отмеченных.
- Статус — цветная точка справа в каждой строке: авторизован (зелёная), сессия истекла (жёлтая), не авторизован (красная), идёт операция (синяя).
- Контекстное меню — «Свойства…» (имя, Bundle ID, email аккаунта, основная локаль, прокси), «Группа», «Удалить».
Вкладки выбранного приложения
| Вкладка | Горячая клавиша | Что там |
|---|---|---|
| «Главная» | ⌘1 | Прогресс, аккаунт, прокси, API-ключ — раздел 10 |
| «Метаданные» | ⌘2 | Тексты, локали, AI-перевод, категории, цена, рейтинг, Game Center и покупки — раздел 11 |
| «Скриншоты» | ⌘3 | Скриншоты и видео App Preview, A/B-тесты страницы, загрузка — раздел 12 |
| «Сборка» | ⌘4 | Исходники, сборка IPA, библиотека билдов — раздел 13 |
| «Публикация» | ⌘5 | Версии в ASC, привязка билда, черновик заявки и отправка на ревью — раздел 14 |
В шапке над вкладками: статус авторизации, Bundle ID, кнопка «Открыть в Notion» (если приложение привязано к карточке), аккаунт-капсула со входом/выходом и кнопка «Быстрая загрузка». Слева от вкладок — чип текущей версии в ASC и кнопка + для создания новой версии.
Панель операций
Открывается кнопкой в правом верхнем углу (⌘0). Это история всего, что Nursery делал с этим приложением: каждая операция — карточка с прогрессом, статусом («В процессе», «В очереди», «Успешно», «Ошибка», «Отменено») и разворачиваемым логом. Здесь можно:
- отменить идущую операцию или убрать её из очереди;
- развернуть «Логи» и скопировать их;
- для упавшей операции — нажать «Отправить лог»: короткое описание, что вы делали, плюс полный лог уходят разработчику;
- очистить историю целиком («Очистить историю»).
Уведомления
Об окончании операции сообщает всплывающий тост в окне («Сертификаты созданы», «IPA собран», «Скриншоты загружены»…). Если окно Nursery в этот момент не активно, вместо тоста придёт системное уведомление macOS со звуком — можно спокойно уходить в другое приложение на время долгой сборки. Разрешение на уведомления запрашивается один раз при первом запуске.
Настройки
Кнопка «Настройки» — внизу сайдбара. В шапке окна: переключатель темы (светлая/тёмная) и «Язык интерфейса» — Системный, English, Русский, Українська (после смены Nursery предложит перезапуститься).
- «Аккаунт и лицензия» — статус ключа, оставшиеся дни, «Обновить статус», продление через Telegram.
- «Интеграции» — подключение Notion-токена (раздел 16) и «AI-переводы локалей» — свой API-ключ OpenAI или DeepSeek для перевода описаний (раздел 11).
- «Сеть» — тумблер «Работа без прокси»: разрешить операции без прокси. Настройка глобальная, действует на все приложения. Осторожно: Apple увидит реальный IP устройства (раздел 8).
- «Обновления» — текущая версия и кнопка «Проверить обновления».
- «Браузерное расширение» — кнопка «Скопировать ссылку на расширение» (страница «Nursery Cookie Sync» в Chrome Web Store) и короткая инструкция «Как установить» (раздел 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 Cookie Sync» в Chrome Web Store.
- Установите его в свой браузерОткройте ссылку в браузере, где ведёте Apple-аккаунт, — обычном Chrome или антидетекте (Octo и подобные) — и нажмите Add to Chrome. Ссылка копируется, а не открывается автоматически, как раз потому, что Nursery не знает, в каком браузере и профиле живёт ваш аккаунт. Расширение работает только в браузерах на основе Chromium (Chrome, Edge, Brave, Arc, Opera и подобных); Safari и Firefox не поддерживаются.
Вход
Порядок важен: сначала «Войти» в Nursery, потом «Sync Cookies» в браузере. Приёмник cookies на порту 5556 работает только пока открыто окно входа — если нажать кнопку расширения без него, получите «Server unreachable».
- Нажмите «Войти» в NurseryКнопка в шапке приложения. Откроется окно «Вход через cookies» с подсказкой «Откройте App Store Connect в браузере и нажмите кнопку расширения «Nursery Cookie Sync».» — с этого момента 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» жмёте из нужного профиля (расширение придётся установить в каждый).
- если приложение уже привязано к аккаунту, а «Sync Cookies» нажат в профиле с другим аккаунтом, Nursery такие cookies не примет: покажет «Эти cookies — аккаунт …, а приложение привязано к …» и оставит окно входа открытым — синхронизируйте из нужного профиля. Сменить аккаунт приложения можно только через «Выйти» (см. выше).
Что требует cookie-сессию, а что API-ключ
| Операция | Что нужно |
|---|---|
| Создание сертификатов (первый раз) | Cookie-сессия (заодно создаётся API-ключ) |
| Создание приложения в ASC | Cookie-сессия |
| Метаданные («Загрузить в ASC») | API-ключ и cookie-сессия (часть шагов — App Privacy, платформы, DSA — идёт по cookie) |
| Скриншоты | Только API-ключ |
| Сборка IPA | Ничего из этого — локальная операция |
| Загрузка IPA, привязка билда, новая версия, черновик заявки и отправка на ревью | Только API-ключ |
| Синк локалей из ASC | Только API-ключ |
| Game Center и покупки (отдельная загрузка), A/B-тесты страницы, смена основной локали | Только API-ключ |
Прокси и работа без прокси
Каждому приложению (аккаунту) можно назначить собственный прокси — весь трафик 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.
Работа без прокси
Тумблер «Работа без прокси» в настройках (карточка «Сеть») снимает единственное требование — «без прокси операции запускать нельзя». Всё остальное (вход, сессии, ключи) работает как обычно, но запросы идут с реального IP устройства — на «Главной» об этом напоминает оранжевый баннер «Работа без прокси включена». Без прокси и без этого тумблера операции заблокированы (красный баннер «Прокси не настроен»).
Сертификаты
Всё управление — на вкладке «Главная», карточка «Прогресс», строка «Сертификаты». Требуются вход в аккаунт и настроенный прокси (или разрешённая работа без прокси).
Создание
Кнопка «Создать» открывает окно «Capabilities для Bundle ID»:
- Список capabilities — отметьте нужные (есть поиск). Push Notifications включён по умолчанию (можно снять); In-App Purchase помечен «всегда вкл» — его включает сам Apple. Game Center — обычная галка, по умолчанию выключен: включите, если в приложении есть достижения или лидерборды (раздел 11).
- «Дополнительный таргет: виджет или NSE» — галка для второго таргета приложения: виджета или Notification Service Extension (rich-push — картинки в пушах). Nursery создаст для него отдельный Bundle ID и профиль. Если выбран проект («Выбрать проект…», «Сканировать таргеты»), Nursery сам найдёт таргет расширения, а если в проекте используются App Groups — зарегистрирует группу и привяжет её к обоим App ID. Без проекта создаётся
<bundle>.NotificationServiceбез App Groups. Поддерживается один дополнительный таргет; после создания сертификатов галка блокируется.
По кнопке «Создать сертификаты» Nursery выполняет цепочку: API-ключ ASC (если ещё нет) → регистрация Bundle ID → настройка capabilities → distribution-сертификат с приватным ключом → provisioning-профиль. Прогресс и лог — в панели операций. Если приложение привязано к Notion, готовый cert.zip и служебные поля (Team ID, Issuer ID) автоматически сохранятся в карточку.
Умное переиспользование
Nursery не плодит дубли на аккаунте:
- API-ключ — один на команду (лимит Apple). Если у другого приложения того же аккаунта ключ уже есть, он просто переиспользуется.
- Distribution-сертификат — если в аккаунте уже есть сертификат, чей приватный ключ лежит у другого приложения в Nursery, файлы скопируются, новый выпускаться не будет (в логе «♻️ Переиспользуем существующий сертификат»).
- Лимит Apple — 2 сертификата Apple Distribution. Если оба слота заняты чужими (не созданными в Nursery) сертификатами, а в папке приложения нет своего, Nursery отзовёт все сертификаты этого типа, чтобы освободить место, — это видно в логе. Учтите это, если тем же аккаунтом подписываете что-то вне Nursery.
Повторный запуск безопасен: когда сертификаты уже созданы, «Управление» → «Capabilities» работает в режиме обновления — меняются только capabilities и перевыпускается профиль, сертификат и ключи не трогаются. Capabilities из списка Nursery, которые не отмечены в окне, будут сняты в Developer Portal; исключения — In-App Purchase, Game Center и WeatherKit, их Nursery не снимает никогда. Capabilities, которых нет в списке 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-профиль (+ отдельный для дополнительного таргета — виджета или NSE, если включён) |
AuthKey_<KeyID>.p8 | API-ключ App Store Connect |
Меню «Управление»: «Папка» открывает эту папку в Finder, «Экспорт .zip» сохраняет всё одним архивом <bundleId>-cert.zip — так сертификаты передаются коллеге.
.key создаётся локально и никуда не отправляется. Если удалить приложение из Nursery или потерять папку — восстановить ключ невозможно, только выпускать сертификат заново. Для важных приложений сделайте «Экспорт .zip» и положите архив в надёжное место.Вкладка «Главная»
Домашняя вкладка приложения. Сверху может показываться баннер о состоянии сети («Прокси не настроен», «Работа без прокси включена», «Защита прокси отключена»). Ниже — карточки:
- «Прогресс» — три ключевых шага со статусами и кнопками действий:
- «Сертификаты» — создать / импортировать / управлять (раздел 9);
- «Приложение создано» — кнопка «Создать» регистрирует приложение в App Store Connect: запись с вашим Bundle ID, названием и основной локалью, плюс первая версия 1.0. До этого шага вкладка «Метаданные» закрыта. Если приложение уже есть в App Store Connect (создано вручную, через Xcode или на другом Mac), нажмите «Привязать существующее…» и укажите его Apple ID (App Store Connect → App Information): Nursery проверит, что Bundle ID совпадает, возьмёт основную локаль и подтянет локали из ASC. «Создать» для уже существующего приложения не сработает — второе с тем же Bundle ID Apple не заведёт;
- «Метаданные заполнены» — статус синхронизации метаданных.
- «Apple Account» — имя и Team ID вошедшего аккаунта.
- «App Store Connect API» — Issuer ID, Key ID и статус P8-ключа. Ключ создаётся автоматически при выпуске сертификатов (или приходит с импортом) и используется для всех API-операций: метаданных, скриншотов, загрузки билда.
- «Прокси» — текущий прокси аккаунта, кнопки изменения и проверки.
Метаданные
Вкладка открывается после создания приложения в ASC. Если приложение добавлено из Notion, тексты подтянутся из карточки автоматически — но только в пустые поля, ручные правки не перетираются.
Локали
Карточка «Локали»: чипы языков стора — с названиями языков, код локали виден в подсказке при наведении. Основная локаль помечена бейджем «Основная», прочие удаляются крестиком (если в языке уже есть тексты — с подтверждением), новые добавляются чипом «Добавить локаль»: в окне есть поиск по названию или коду, и можно отметить сразу несколько языков. Переключение чипа показывает форму этой локали.
Сменить основную локаль — правый клик по языку → «Сделать основной». До создания приложения в ASC смена только локальная; у созданного приложения Nursery меняет основную локаль прямо в App Store Connect — для этого нужны прокси и API-ключ.
Кнопка с круговой стрелкой рядом с заголовком — «Подтянуть локали из App Store Connect»: добавляет локали, которые есть в ASC, но отсутствуют локально, вместе с их текстами. Существующие локальные данные при этом не перезаписываются. Нужен только API-ключ; работает повторно; та же кнопка есть на вкладке «Скриншоты». Полезно для приложений, которые уже живут в сторе, и при переносе на другой Mac.
AI-перевод локалей
Описание, подзаголовок и ключевые слова можно перевести из основной локали во все остальные — своим API-ключом OpenAI или DeepSeek (запросы оплачиваются у провайдера). Подключение: Настройки → «Интеграции» → «AI-переводы локалей» → «Подключить» — выберите провайдера и вставьте ключ, он хранится в Keychain. Сам перевод — кнопка со значком перевода рядом с заголовком «Локали» (активна, когда языков больше одного), окно «Перевод локалей»:
- «Что переводить» — описание, подзаголовок, ключевые слова и What's New (описание обновления). Ключевые слова не переводятся дословно, а подбираются под поиск в App Store на языке локали (ASO-адаптация).
- По умолчанию переводится только недостающее — пустые поля и копии из основной. Галка «Перевести всё заново» затирает существующие переводы: включайте, когда поменяли тексты основной.
- «Перевести и основную локаль» — для приложений, где тексты основной написаны не на её языке (например, основная — тайский, а тексты английские).
- При первом переводе Nursery запоминает тексты основной как эталон и дальше переводит с него, даже если основную потом переписать; кнопка «Обновить эталон» снимает его заново.
Переводы появляются в полях локалей — проверьте их и залейте как обычно, кнопкой «Загрузить в ASC».
Поля и лимиты
Форма локали: «Подзаголовок», «Ключевые слова» (через запятую, без пробелов — пробелы тоже считаются в лимит), «URL политики конфиденциальности», «Описание», для обновлений — «Что нового» (у версии 1.0 поле скрыто — Apple его игнорирует). Счётчики лимитов App Store:
| Поле | Лимит |
|---|---|
| Название приложения | 30 |
| Подзаголовок | 30 |
| Ключевые слова | 100 |
| Описание / Что нового | 4000 |
| URL | 255 |
При превышении счётчик краснеет, и загрузка блокируется — под кнопкой «Загрузить в ASC» будет написано, какое поле и в какой локали не влезло. Название приложения одно на все локали.
Карточки настроек
- «Основная категория» (обязательна) и «Дополнительная категория». У категории Games появляются две необязательные подкатегории — как в самом App Store Connect.
- «Доступность по регионам» — плитка «Все страны» или регионы; стрелка на плитке региона открывает выбор отдельных стран.
- «Платформы» — чекбоксы «Mac App Store» и «Vision Pro»: публиковать ли iOS-приложение также на этих платформах.
- «Соответствие (EU DSA)» — чекбокс «Объявить аккаунт „не трейдером"»: при загрузке метаданных Nursery выставит trader status аккаунта в «не трейдер» (Business → Compliance). Действие на уровне аккаунта, повторный запуск безвреден; выключенный чекбокс статус не трогает вообще. Включайте, только если вы действительно не трейдер по EU DSA. Требует живой cookie-сессии.
- «Возрастной рейтинг» — анкета Apple. Можно завести шаблоны и назначить один дефолтным; без шаблона применяется рейтинг 4+. Итоговую отметку (4+/9+/13+/16+/18+) App Store вычисляет из ответов анкеты.
- «Цены и доступность» — цена (по умолчанию Free; базовая территория — США, остальные цены Apple считает сам).
- «Контакты для обзора» — контакты для команды ревью Apple. Имя, фамилия и email подставляются из аккаунта в пустые поля автоматически; телефон Nursery берёт из данных Developer-аккаунта, а кнопка «Перегенерировать» создаёт номер страны аккаунта. Номер нужен в международном формате (с
+и кодом страны) и обязательно мобильный: невалидный или городской номер подсвечивается предупреждением под полем — с ним App Review уйдёт без контактов (заметки и демо-аккаунт сохранятся). Если номер не примет сам ASC, контакты тоже сохранятся без него — в логе будет подсказка вписать их вручную. Демо-аккаунт (логин/пароль) указывайте, если для ревью нужен вход в приложение. Там же — «Заметки для ревьюера» и «Вложения»: видео или документы для App Review (перетащите файлы или нажмите «Добавить файл...»); при загрузке метаданных они заменяют вложения в ASC.
Загрузка
Кнопка «Загрузить в ASC» отправляет всё по шагам: copyright (генерируется автоматически из имени владельца аккаунта) и тип релиза → категории → тексты локалей → цена → доступность → права на контент → возрастной рейтинг → контакты ревью → App Privacy → платформы → DSA, а если включены — ещё Game Center и покупки (см. ниже). Тип релиза ставится «вручную» — после аппрува Apple версию выпускаете вы, а не автомат.
Шаги независимы: если часть не прошла, появится окно «Метаданные загружены не полностью» со списком — исправьте причину и запустите синхронизацию ещё раз, успешные шаги повторятся безболезненно. Для кнопки нужны и API-ключ, и живая cookie-сессия (см. таблицу в разделе 7) — если чего-то не хватает, причина будет написана под кнопкой.
Game Center и покупки
В «Метаданных» есть две карточки — «Game Center» (достижения и лидерборды) и «Встроенные покупки» (consumable, non-consumable и non-renewing; подписки с автопродлением не поддерживаются). Включите нужную галкой и наполните одним из способов:
- JSON — перетащите файл на карточку или импортируйте в редакторе. Образец формата — ссылка «Скачать пример JSON» прямо в карточке.
- Вручную — «Добавить» или «Редактировать…» открывает редактор: список слева, форма справа, тексты по локалям, картинка достижения/лидерборда или скриншот покупки для ревью — перетаскиванием или выбором файла. Ошибки, которые ASC не примет, блокируют сохранение; нехватка картинок или текстов — только предупреждение.
При загрузке метаданных достижения, лидерборды и покупки создаются в ASC, существующие обновляются; отдельно их можно загрузить кнопками «Загрузить Game Center» и «Загрузить покупки» — для этого хватает API-ключа. «Убрать» удаляет конфиг только из Nursery — в App Store Connect ничего не удаляется. В заявку на ревью они добавляются отдельно, на вкладке «Публикация» (раздел 14).
Скриншоты
Устройства
Карточка «Устройства» — отметьте, под какие экраны загружать:
| Устройство | Целевой размер (портрет) | Архив в 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 сам приведёт картинки к целевым при загрузке. Но пропорции лучше соблюдать: подгонка выполняется растяжением под целевой размер, картинка с сильно другим соотношением сторон исказится. Картинки при этом перекодируются, прозрачность (alpha) теряется.
Источники
Для каждого устройства скриншоты берутся из одного из двух мест (локальный выбор всегда приоритетнее Notion):
- Notion — архив с соответствующим именем на странице приложения (бейдж в строке устройства показывает, найден ли он);
- Свои файлы — кнопка со стрелкой в лоток («Выбрать скриншоты (.png/.jpg) или видео App Preview (.mov/.mp4): папку, .zip или файлы») или просто перетащите папку/архив/файлы на строку устройства. Вернуться к Notion-архиву можно кнопкой «Убрать локальный архив».
Видео App Preview. Файлы .mov/.mp4 в наборе загружаются как App Preview — без изменений, поэтому требования Apple к разрешению и длительности соблюдайте сами. Лимит Apple — до 10 скриншотов и до 3 видео на устройство в каждом языке; если выбрать больше, Nursery предупредит окном «Слишком много файлов» — уберите лишнее и повторите.
01.png, 02.png, 03.png… — иначе 10 встанет перед 2.Локали и загрузка
Карточка «Локали» — в какие языки грузить (кнопки «Все» / «Снять все»). При первой загрузке по умолчанию отмечены все локали, при обновлении — ни одной (обычно обновлять скриншоты нужно не везде). Кнопка запуска подписана по выбору: «Загрузить во все локали (N)» или «Загрузить в N локалей» (пока локали не выбраны — «Загрузить скриншоты»); статус-карточка покажет «Скриншоты загружены», когда всё готово.
Если выбранной локали ещё нет в ASC, скриншоты в неё не загрузятся (в логе «В ASC нет локализаций для: … — пропускаю. Сначала запусти Метаданные.»). Порядок правильный: сначала метаданные (создают локали), потом скриншоты.
A/B-тесты страницы (Product Page Optimization)
Карточка «Куда загружать» выбирает цель: «Основная страница» или вариант A/B-теста из ASC (кнопка ↻ обновляет список). Новый тест — «Создать тест…»: название (видно только в ASC), 1–3 варианта (оригинал остаётся контрольной группой) и доля трафика на тест. У каждого варианта свои папки и свои локали: переключили цель — списки устройств и языков ниже меняются; устройство без своей папки возьмёт файл основной страницы, а если нет и его — архив из Notion. Можно загрузить сразу во все настроенные цели. Менять скриншоты можно только у тестов, которые не в ревью, не запущены и не завершены; сам запуск теста — вручную в App Store Connect после ревью вариантов.
Сборка 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»: все билды с версией, размером и датой. У незагруженных — кнопка «Загрузить в App Store Connect», у загруженных — зелёная пометка «Загружено». Контекстное меню: «Показать в Finder», «Удалить». После загрузки билд уходит на обработку к Apple (обычно 5–30 минут) и появляется на вкладке «Публикация».
CFBundleShortVersionString, что у уже существующей в ASC версии (если она не в статусе черновика). Поднимите номер версии в проекте и пересоберите — иначе загрузка остановится с понятным сообщением.Если сборка упала
Текст ошибки в панели операций содержит хвост лога xcodebuild — по нему видно причину. Частые случаи:
- «Отсутствуют файлы сертификата» — в папке нет
.cer/.key/.mobileprovision. Запустите «Создать сертификаты» (или проверьте, что импорт прошёл). - ValidateDevelopmentAssets — это не про подпись, а про сам проект: настройка
Development Assetsссылается на папку (обычно «Preview Content»), которой в исходниках нет. Создайте её или уберите ссылку в настройках таргета Xcode. - Command Line Tools вместо Xcode — установите полный Xcode из App Store и запустите его один раз.
Полный лог всегда можно скопировать в панели операций («Логи» → «Скопировать логи») или отправить разработчику кнопкой «Отправить лог».
Публикация
Вкладка «Публикация» — зеркало App Store Connect: все версии приложения со статусами понятными словами («Готовится к отправке», «Ждёт ревью», «В продаже»…; исходный статус ASC — в подсказке при наведении), а под статусом — что делать дальше. Кнопка «Обновить» перечитывает состояние из ASC. Цвет бейджа: зелёный — версия в продаже, красный — отклонена, снята с ревью или билд отклонён, оранжевый — всё остальное (черновик, ревью, обработка).
Финальные действия выполняются здесь — и только вручную, в три шага:
- Прикрепите билдУ версии в статусе «Готовится к отправке» нажмите «Прикрепить билд» (или «Изменить», чтобы заменить) и выберите билд. Он появляется в списке после обработки Apple. Заодно Nursery автоматически проставит декларацию шифрования (Export Compliance) — «шифрование не используется». Если приложение использует нестандартное шифрование, поправьте ответ в App Store Connect.
- Создайте черновик заявкиКнопка «Создать черновик» (активна, когда билд прикреплён) собирает заявку на ревью: версия плюс, если они включены в «Метаданных», Game Center и покупки. На ревью при этом ничего не отправляется — версия переходит в статус «В черновике заявки».
- Отправьте на ревьюНа месте «Создать черновик» появится «Отправить». Подтверждение «Отправить версию X на ревью?» — уйдёт всё, что лежит в черновике заявки. Учтите: отменить отсюда нельзя — снять версию с ревью можно только на сайте App Store Connect.
Если Game Center или покупки нужно добавить в уже созданный черновик — кнопка «Добавить в заявку: …» вверху вкладки. Она появляется, когда они включены в «Метаданных», и тоже ничего не отправляет на ревью.
Новая версия существующего приложения создаётся кнопкой + рядом с чипом версии в шапке: Nursery предложит следующий номер, вам останется подтвердить. Затем заполняйте «Что нового», скриншоты и билд как обычно.
Быстрая загрузка
Кнопка «Быстрая загрузка» в шапке приложения прогоняет весь конвейер одним запуском. Перед стартом — визард из пяти шагов:
- Сертификаты и языкОсновная локаль (с ней создаётся приложение в ASC; позже сменить её можно только в «Метаданных»), дополнительный таргет (виджет или NSE), выбор capabilities.
- МетаданныеТа же форма, что на вкладке «Метаданные».
- СкриншотыУстройства, источники, локали.
- ИсходникиПроект для сборки (или source.zip из Notion).
- ПодтверждениеСписок «Что будет выполнено» и кнопка «Запустить».
Порядок выполнения: сертификаты → создание приложения в ASC → сборка IPA → далее параллельно: загрузка метаданных, загрузка скриншотов и отправка IPA в ASC. Уже выполненные шаги распознаются автоматически: на них появляется баннер «Уже сделано», а в сводке — пометка, что они будут пропущены. Между шагами Nursery делает небольшие случайные паузы.
Во время работы кнопка в шапке превращается в «Отменить загрузку». Пока идут сертификаты, создание приложения или сборка, другие операции по этому приложению не запускаются — эти шаги выполняются строго по одному. По завершении остаются ручные шаги на «Публикации» — привязка билда, черновик заявки и отправка (раздел 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; они подставляются в основную локаль, если там эти поля пустые); файлыsource.zip,cert.zipи архивы скриншотов. - Пишет обратно (по мере работы, без вашего участия): сгенерированный Bundle ID, Issuer ID, Team ID, App ID, email аккаунта и готовый
cert.zip. Статусы версий и публикации в Notion не пишутся.
Тексты из блока Metadata подтягиваются в метаданные только в пустые поля — ваши ручные правки не перетираются.
Обновления и поддержка
- Обновления приходят автоматически: Nursery проверяет их при запуске и дальше каждые 6 часов и показывает окно «Доступна новая версия». Проверить вручную: Настройки → «Обновления» → «Проверить обновления». После установки приложение перезапустится само.
- Ошибка операции — в панели операций нажмите «Отправить лог»: опишите, что делали, полный лог прикрепится автоматически и уйдёт разработчику.
- Идеи и вопросы — карточка «Обратная связь» в настройках или Telegram @R_R_E_B.
Частые вопросы
В расширении «Server unreachable»
Приёмник cookies работает только пока в Nursery открыто окно входа. Сначала нажмите «Войти» в приложении, потом — «Sync Cookies» в браузере.
Расширение пишет «No Apple session»
Вы не залогинены на appstoreconnect.apple.com в этом браузере (или профиле). Откройте сайт, войдите, затем жмите «Sync Cookies».
Синхронизируется не тот аккаунт
Браузер держит одну активную сессию Apple на профиль. Выйдите из первого аккаунта на сайте и войдите под нужным — или используйте отдельный профиль браузера под каждый Apple ID (раздел 7). Если приложение уже привязано к другому аккаунту, Nursery такие cookies не примет и покажет, какой аккаунт пришёл и к какому привязано приложение.
Кнопка неактивна — почему?
У основных кнопок причина написана прямо под ними, у остальных — в подсказке при наведении курсора («Нужен прокси…», «API ключ не загружен», «Выберите хотя бы одно устройство» и т.п.). Это первый шаг диагностики почти любой ситуации.
Вкладка «Метаданные» размыта и не редактируется
Приложение ещё не создано в App Store Connect. Вкладка «Главная» → карточка «Прогресс» → строка «Приложение создано» → «Создать».
«Нет редактируемой версии в App Store Connect»
Метаданные загружаются в черновик (PREPARE_FOR_SUBMISSION). Для обновления живого приложения сначала создайте новую версию кнопкой + в шапке.
Статус «Сессия истекла»
Cookie-сессия Apple закончилась — это норма, повторите вход через расширение. Операции по API-ключу (скриншоты, загрузка, версии, Submit) работают и без неё.
Загруженный билд не виден на «Публикации»
Apple обрабатывает билд после загрузки — обычно 5–30 минут. Нажмите «Обновить» позже. Письмо от Apple о завершении обработки придёт на почту аккаунта.
Сборка идёт с реального IP, хотя прокси задан
Не поднялась системная защита сборки. Включите NurseryApp в Системных настройках → «Объекты входа и расширения», либо не соглашайтесь на «Продолжить без защиты», когда Nursery об этом спрашивает (раздел 8).
Нужен ли вход в Xcode?
Нет. Nursery подписывает сборку вручную своими сертификатами и профилями — аккаунт в Xcode и выбор Team не требуются.
Как перенести приложение на другой Mac?
Экспортируйте сертификаты («Экспорт .zip»), передайте .ipa-билды при необходимости. На новом Mac добавьте приложение с тем же Bundle ID, импортируйте архив, затем на «Главной» нажмите «Привязать существующее…» и укажите Apple ID приложения — вкладка «Метаданные» откроется, а локали с текстами (описания, ключевые слова, подзаголовки) подтянутся из ASC. Локали, которые уже есть в Nursery, не перезаписываются. А вот категории, цену, возрастной рейтинг и контакты для ревью синк не восстанавливает — их заполните заново. Лицензию, привязанную к старому Mac, поможет перепривязать разработчик.