Дистрибуция iOS‑приложения без App Store: практический опыт с AltStore PAL

от автора

App Store review отклонил наше приложение по Guideline 1.2 — основная механика (пользователи оценивают фотографии друг друга) запрещена как категория, и это не лечится правками метаданных. Так мы стали одними из первых, кто дистрибутирует iOS‑приложение исключительно через альтернативный маркетплейс. Документации по этому пути мало, местами она противоречива, поэтому — пошаговый разбор того, что реально пришлось сделать.

Шаг 1. Alternative Terms Addendum

В App Store Connect подписывается дополнение к договору. Быть резидентом ЕС не нужно. До миллиона первых установок в год дистрибуция бесплатна (для компаний с выручкой до €10M — освобождение от Core Technology Fee).

Шаг 2. Привязка к маркетплейсу

У AltStore есть REST API для регистрации developer ID — важно: это UUID из профиля ASC, а не Team ID (на Team ID регистрация молча не работает, наступили). Токен добавляется в ASC: Users and Access → Integrations → Marketplaces.

Шаг 3. Нотаризация вместо ревью

Сборка загружается обычным xcodebuild + upload. Дальше вместо «Submit for Review» — нотаризация: автоматизированная проверка безопасности и работоспособности, без контентных гайдлайнов. Наша прошла с первого раза за ~30 часов. Механика, забаненная в App Store, здесь проходит.

Шаг 4. ADP — хостим сами

Скачивается Alternative Distribution Package: manifest.json, файл signature (без расширения!) и варианты.ipa. Хостится строго как есть. Две грабли: файл signature без расширения (наш SPA‑fallback на ASP.NET отдавал вместо него index.html — лечится ServeUnknownFileTypes);.ipa должен отдаваться как octet‑stream.

Шаг 5. Source JSON и федерация

source.json: marketplaceID, downloadURL манифеста, иконка, скриншоты, версии. Пользователь добавляет источник по altstore://source?url=… Федерация (fediUsername) — и приложение находится поиском внутри маркетплейса.

Ограничения и фолбэки

Маркетплейсы работают в ЕС, Японии и Бразилии, iOS 17.4+. Для остального мира — PWA (standalone‑манифест + service worker) и сайдлоад‑IPA через AltStore Classic со своим source. Главная нетехническая проблема — конверсия: пользователю нужно объяснить, что такое маркетплейс, поэтому весь трафик ведём на страницу‑инструкцию.

Итого

Затраты сверх аккаунта разработчика — ноль. Чистого времени — около недели, большая часть ушла на недокументированные мелочи выше. Если App Store для вашего приложения закрыт (или просто не хочется отдавать 15–30%), путь рабочий уже сегодня. Приложение из кейса — Rate Me (rateme.lv/ios), отвечу на вопросы в комментариях.

ссылка на оригинал статьи https://habr.com/ru/articles/1063670/