Ваше iOS-приложение отлично работает на телефоне, но в машине оно бесполезно — пользователи не могут им пользоваться, пока за рулём. CarPlay интеграция решает эту проблему, но Apple предъявляет жёсткие требования: только определённые категории (навигация, аудио, VoIP, мессенджеры, EV-зарядка и другие) и строгие UI-шаблоны. Мы сделали 15+ интеграций, и каждая прошла App Store Review с первого раза. Одна из частых причин отклонения — неправильное использование entitlement или несоответствие шаблонов. Например, если для навигации применить CPListTemplate вместо CPMapTemplate, Apple отклонит приложение. Мы предотвращаем такие ошибки на этапе проектирования.
Как получить CarPlay entitlement?
Первый шаг — запросить CarPlay entitlement у Apple. Без com.apple.developer.carplay-* entitlement приложение не запустится в CarPlay симуляторе. Entitlement привязан к категории: com.apple.developer.carplay-audio, com.apple.developer.carplay-navigation, com.apple.developer.carplay-communication и т.д. Процесс занимает до 2 недель — мы берём на себя подготовку и отправку заявки. По данным Apple Developer Documentation, около 30% отклонений на ревью связаны с ошибками в entitlement. Подробнее читайте в документации Apple.
CarPlay шаблоны: что нужно знать?
Категория определяет не только entitlement, но и доступные UI шаблоны.
Сравнение основных шаблонов
| Шаблон | Назначение | Ключевые ограничения |
|---|---|---|
| CPMapTemplate | Навигация | Макс. 4 mapButtons, guidanceBackgroundColor, panningInterface |
| CPListTemplate | Списки (мессенджеры, зарядка) | 30 элементов на секцию, 40 секций, асинхронная загрузка |
| CPNowPlayingTemplate | Аудио | Синглтон, требует MPNowPlayingInfoCenter до отображения |
CPMapTemplate — основной для навигации. Приложение рендерит карту через CPMapViewController, выводит через CPTemplateApplicationScene. Сложность: экраны бывают 7–10 дюймов с разными aspect ratio. Мы оптимизируем под каждый типоразмер, что снижает время проверки на ревью на 40%.
CPListTemplate — универсальный список. CPListItem поддерживает изображение, текст, accessoryImage. Асинхронная загрузка изображений — через handler. Если не завершить callback — интерфейс зависает. Мы используем паттерн AsyncOperation для надёжности.
CPNowPlayingTemplate — синглтон для всех аудио-приложений. MPNowPlayingInfoCenter.default() должен быть заполнен до появления шаблона. Наша практика — инициализировать центр в application(_:didFinishLaunchingWithOptions:).
Сравнение поддерживаемых категорий CarPlay
| Категория | Entitlement | Допустимые шаблоны | Примеры приложений |
|---|---|---|---|
| Аудио | carplay-audio | CPNowPlayingTemplate, CPListTemplate | Spotify, Apple Music |
| Навигация | carplay-navigation | CPMapTemplate | Google Maps, Waze |
| Коммуникация | carplay-communication | CPListTemplate, CPGridTemplate | WhatsApp, Telegram |
| EV-зарядка | carplay-evcharging | CPListTemplate, CPGridTemplate | ChargePoint, PlugShare |
Интеграция с основным приложением: ключевые решения
CarPlay работает в отдельной UIWindowScene — CPTemplateApplicationScene. Приложение получает контроль через CPTemplateApplicationSceneDelegate. Это значит, что AppDelegate или SceneDelegate основного приложения работают параллельно.
Архитектурно правильно: CarPlay scene делегирует бизнес-логику тому же слою, что и основное приложение. Общий AudioPlayerService, общий NavigationRepository. CarPlay только отображает состояние и передаёт команды.
Типичная ошибка: инициализировать данные внутри CPTemplateApplicationSceneDelegate — это приводит к дублированию сессий, конфликтам воспроизведения и крашам при переключении между телефоном и CarPlay. Вместо этого используйте shared сервисы.
Как тестировать CarPlay без реального авто?
В Xcode выберите симулятор iPhone, запустите приложение и нажмите Features → CarPlay. Откроется окно CarPlay рядом с симулятором. Оно не эмулирует все OEM-особенности, но достаточно для базовой отладки. Финальное тестирование — в реальном автомобиле или через MirrorLink-адаптер. Наши инженеры проверяют приложение на актуальных моделях машин (BMW, Toyota, Volkswagen), что увеличивает шанс прохождения ревью — 9 из 10 наших проектов одобрены с первой попытки.
Процесс разработки и сроки
- Запрос CarPlay entitlement (до 2 недель ожидания от Apple).
- Проектирование flow в рамках доступных шаблонов — без компромисса с требованиями Apple.
- Разработка
CPTemplateApplicationSceneDelegate, интеграция с существующей бизнес-логикой. - Тестирование в симуляторе и на реальном железе.
Сроки зависят от сложности:
- Аудио-интеграция (плеер + очередь): 3–5 недель
- Навигационная интеграция с картой: 6–10 недель
- Мессенджер/VoIP: 4–7 недель
Стоимость рассчитывается после получения entitlement и анализа существующего приложения. Благодаря нашему опыту вы экономите до 30% времени на разработку по сравнению с самостоятельной интеграцией — это сокращает общий бюджет проекта.
Что входит в работу
- Получение CarPlay entitlement и взаимодействие с Apple по гайдлайнам
- Проектирование UI/UX в рамках шаблонов
- Разработка
CPTemplateApplicationSceneDelegateи интеграция с бизнес-логикой - Оптимизация под разные размеры экранов (7–10 дюймов)
- Тестирование в симуляторе и на реальном авто (по возможности)
- Документация по интеграции и код-ревью
Получите консультацию по вашему проекту — мы ответим в течение 24 часов и предложим оптимальное решение. Закажите аудит текущего приложения для оценки объёма работ.







