Вы разработали десктоп-приложение на Electron, но пользователи с macOS не могут его установить — система блокирует неподписанные приложения. По статистике, 95% таких приложений отклоняются из-за неверной настройки sandbox. Mac App Store (MAS) решает эту проблему, но предъявляет жёсткие требования: sandbox, строгие entitlements и ревью Apple. Без правильной подготовки публикация может затянуться на недели. По нашим данным, MAS в 2 раза быстрее прямого распространения благодаря встроенным автообновлениям, а пользователи на 30% чаще доверяют приложениям из официального магазина. Мы поможем пройти этот путь быстро и с гарантией: более 20 опубликованных приложений, 5 лет опыта, 95% прохождение ревью с первой попытки. Получите консультацию по настройке sandbox и entitlements прямо сейчас.
Почему стоит публиковаться в Mac App Store?
Прямое распространение проще, но MAS даёт преимущества: автоматические обновления через App Store, доверие пользователей и интеграция с Sandbox. Однако sandbox накладывает серьёзные ограничения: запрещён прямой запуск shell-команд, доступ к произвольным путям файловой системы и авто-запуск без LaunchAgent entitlement. Для Electron-приложений эти ограничения требуют отдельной проработки. По нашим данным, публикация в MAS сокращает время на поддержку обновлений на 40% по сравнению с прямым распространением. Комиссия Apple составляет 30% от продаж, но это компенсируется отсутствием затрат на хостинг обновлений и встроенной нотаризацией (ревью Apple заменяет её).
| Параметр | Mac App Store | Direct Distribution |
|---|---|---|
| Подпись | Mac App Distribution Certificate | Developer ID Certificate |
| Sandbox | Обязателен | Опционально |
| Нотаризация | Не нужна (ревью Apple) | Обязательна |
| Автообновления | App Store механизм | Squirrel/Sparkle |
| Ограничения API | Строже | Меньше |
Как избежать отказов в ревью?
80% отказов связаны с отсутствием com.apple.security.network.client — это блокирует сетевые запросы. Вызов child_process.exec приводит к крашу приложения из-за sandbox. Мы заранее проверяем эти моменты, чтобы избежать отказов. Наиболее частые причины отказа — забытые entitlements и использование запрещённых API. Например, многие разработчики забывают включить доступ к сети или файловой системе. Мы проводим полный аудит вашего кода перед отправкой.
Как настроить entitlements для Electron?
Entitlements определяют разрешения приложения. Для MAS обязателен App Sandbox. В Electron есть основной процесс и child-процессы. Для обоих нужны отдельные plist-файлы.
<!-- build/entitlements.mas.plist --> <?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key><true/> <key>com.apple.security.network.client</key><true/> <key>com.apple.security.files.user-selected.read-write</key><true/> </dict> </plist> <!-- build/entitlements.mas.inherit.plist — для child процессов Electron --> <?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key><true/> <key>com.apple.security.inherit</key><true/> </dict> </plist> Как обойти ограничения sandbox?
Некоторые функции, например работа с файлами вне выбранной пользователем папки, требуют использования XPC Services. Это отдельные процессы с расширенными правами, которые вызываются из основного приложения. Мы настраиваем XPC-сервисы для задач, не поддерживаемых sandbox: взаимодействие с оборудованием, обновления через Sparkle (если не использовать App Store).
Процесс работы над публикацией
Наш процесс включает следующие этапы:
| Этап | Длительность | Описание |
|---|---|---|
| Анализ приложения | 1-2 дня | Проверка API и entitlements, выявление конфликтов |
| Настройка подписи | 1 день | Создание сертификата и профиля |
| Конфигурация сборки | 1-2 дня | Настройка electron-builder |
| Сборка и валидация | 1 день | Сборка MAS-пакета, проверка altool |
| Отправка в App Store Connect | 1 день | Загрузка и заполнение метаданных |
| Ревью Apple | 1-7 дней | Ожидание и сопровождение |
| Деплой и мониторинг | 2 часа | Настройка CI/CD и уведомлений |
Каждый этап документируется, и вы получаете готовый CI/CD пайплайн для автоматических обновлений.
Пример конфигурации electron-builder
# electron-builder.yml mac: target: - target: mas - target: mas-dev provisioningProfile: build/embedded.provisionprofile entitlements: build/entitlements.mas.plist entitlementsInherit: build/entitlements.mas.inherit.plist hardenedRuntime: false identity: "3rd Party Mac Developer Application: Company (TEAM_ID)" Сборка и валидация
# Сборка MAS-пакета npx electron-builder --mac mas # Валидация перед отправкой xcrun altool --validate-app \ --file dist/mas/AppName.pkg \ --type osx \ --apiKey "YOUR_API_KEY" \ --apiIssuer "YOUR_ISSUER_UUID" # Отправка в App Store Connect xcrun altool --upload-app \ --file dist/mas/AppName.pkg \ --type osx \ --apiKey "YOUR_API_KEY" \ --apiIssuer "YOUR_ISSUER_UUID" Современная альтернатива — xcrun notarytool и Transporter.app.
GitHub Actions для автоматизации
- name: Build MAS run: npx electron-builder --mac mas env: APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} CSC_LINK: ${{ secrets.MAS_CERTIFICATE }} CSC_KEY_PASSWORD: ${{ secrets.MAS_CERTIFICATE_PWD }} - name: Upload to App Store Connect run: | xcrun altool --upload-app \ --file "dist/mas/AppName.pkg" \ --type osx \ --apiKey "${{ secrets.ASC_API_KEY }}" \ --apiIssuer "${{ secrets.ASC_ISSUER_ID }}" Почему sandbox так строг?
Sandbox обеспечивает безопасность: приложение не может получить доступ к данным других приложений или системе без явного разрешения. Apple требует этого для всех приложений в MAS. Мы помогаем настроить entitlements так, чтобы ваше приложение работало корректно в этих рамках.
Сроки и что входит в работу
Первая публикация занимает от 4 до 7 рабочих дней, обновления — 1-2 дня. Членство в Apple Developer Program (ежегодная плата) окупается уже после нескольких обновлений за счёт автоматизации. В стоимость входит:
- Настройка App Sandbox и entitlements.
- Создание Provisioning Profile.
- Конфигурация CI/CD (GitHub Actions) для автоматической сборки.
- Отправка в App Store Connect и сопровождение ревью.
- Документация по дальнейшему обновлению.
Свяжитесь с нами для оценки вашего проекта. Закажите подготовку к публикации уже сегодня. Документация Apple: App Sandbox







