Car App — приложение за автомобилна информационно-развлекателна система, интегрируемо с Apple CarPlay и Android Auto. CarPlay — технология на Apple, показваща интерфейса на iPhone на екрана на автомобила и управлявана чрез Siri, сензорен екран или бутони на волана. Android Auto — аналогична технология на Google за Android смартфони. Разработката на Car App включва създаване на приложение на Swift с CarPlay framework и SiriKit за iOS, а на Kotlin — с Car App Library, MediaBrowserService и NavigationManager за Android. Поддръжката на Car App става стандарт за съвременните автомобили — по данни на Apple, 98% от новите автомобили в САЩ поддържат CarPlay, а Android Auto е достъпен в над 200 модела.
Основни точки
Car App — е приложение, което работи в автомобилната информационно-развлекателна система (IVI) чрез проекция на смартфона — Apple CarPlay за iOS и Android Auto за Android. За разлика от Android Automotive OS (вградена операционна система в автомобила), CarPlay и Android Auto са разширения на мобилното приложение, които работят на телефона и проектират интерфейса на екрана на автомобила. Car App е вашето съществуващо iOS/Android приложение, което имплементира протоколите CarPlay или Android Auto.
Ключови категории Car App: навигация (Apple Maps, Google Maps, Waze, Sygic), аудио (Spotify, Apple Music, YouTube Music, Audible, Castbox), съобщения (четене на глас и диктовка чрез Siri/Google Assistant), автомобилни функции (зареждане на EV, паркиране, състояние на автомобила), VOIP обаждания (WhatsApp, Zoom). Всяка категория има свой шаблон на интерфейс — ListTemplate, MapTemplate, AudioTemplate. Системата сама определя коя категория поддържа приложението въз основа на регистрираните Intents.
Ограничения на Car App: Apple и Google строго контролират UX за безопасност — минимален брой елементи, големи бутони (минимум 48x48 pt), без въвеждане на текст (само глас), автоматично затъмняване на интерфейса при движение, забрана на видео. Времето за реакция при докосване трябва да бъде под 100 ms. Всички приложения преминават задължителна модерация (App Review за CarPlay, Google Play Console + CTS за Android Auto).
CarPlay framework (преди CPKit) — рамка на Apple за създаване на CarPlay приложения на Swift. Ключов клас — CPInterfaceController, който управлява навигацията между шаблони. CPInterfaceController съдържа стек от шаблони: CPListTemplate (списъци), CPMapTemplate (навигация), CPNowPlayingTemplate (аудио), CPVoiceControlTemplate (гласово управление). CPListTemplate съдържа CPListItem — елементи на списък с икона, текст и действие.
SiriKit за CarPlay — разширение на SiriKit за гласово управление на приложението в автомобила. Приложението регистрира Intents (INPlayMediaIntent — възпроизвеждане, INStartWorkoutIntent — тренировка, INSendMessageIntent — съобщения). Siri се активира автоматично при свързване на CarPlay и е достъпна чрез бутона за гласово управление на волана. SiriKit CarPlay поддържа CarPlay Dashboard — уиджети на главния екран на CarPlay за показване на информация от приложението (дестинация, текущ трак).
Процес на свързване на CarPlay: iPhone се свързва с автомобила чрез Lightning/USB-C кабел или безжично (CarPlay Wireless, от iOS 9). След свързване iOS автоматично стартира CarPlay сесия, ако приложението имплементира CPApplicationDelegate. Разработчикът не управлява момента на свързване — системата извиква delegate методи при стартиране и завършване на сесията. CarPlay поддържа мултитаскинг: навигацията работи на заден план при превключване към музика и гласовите указания продължават да звучат.
Android Car App Library — Android библиотека за създаване на приложения, съвместими с Android Auto. Основни компоненти: CarAppService — входна точка за Android Auto; Session — управление на жизнения цикъл на сесията; Screen — всеки екран на приложението; CarScreenManager — управление на показването. Приложението поддържа MediaBrowserService за медийно съдържание и NavigationManager за навигационни указания.
MediaBrowserService — ключов компонент за аудио приложения. Приложението имплементира MediaBrowserService и MediaSession за управление на възпроизвеждането. Android Auto автоматично показва контролите (Play/Pause, Next, Previous) и списъка с песни. NavigationManager се използва за навигационни приложения — предава инструкции за завой, статус на маршрута и предупреждения. NavigationManager поддържа CarNotification за показване на навигационни указания в лентата за състояние на Android Auto.
Изисквания за Android Auto: приложението трябва да има category="android.intent.category.APP_AUTO" в манифеста; задължително използване на AndroidX и минимален SDK 26+; поддръжка на тъмна тема (DayNight); поддръжка на сензорно и гласово управление; съответствие с Android Auto Compatibility Test Suite (CTS). Google Play проверява всяко приложение за съответствие с изискванията за сигурност и UX. Процесът на сертифициране отнема 1–4 седмици.
Пример за навигационно приложение за CarPlay на Swift с използване на CarPlay framework.
import CarPlay
class CarPlaySceneDelegate: CPTemplateApplicationSceneDelegate {
func templateApplicationScene(
_ templateApplicationScene: CPTemplateApplicationScene,
didConnect interfaceController: CPInterfaceController
) {
let searchItem = CPListItem(
text: "Търсене на адрес",
detailText: "Въведете дестинация"
)
searchItem.handler = { _, completion in
// Отваряме екрана за търсене
completion()
}
let favoritesItem = CPListItem(
text: "Любими",
detailText: "Запазени адреси"
)
favoritesItem.handler = { _, completion in
showFavorites()
completion()
}
let section = CPListSection(items: [searchItem, favoritesItem])
let listTemplate = CPListTemplate(
title: "Навигация",
sections: [section]
)
interfaceController.setRootTemplate(listTemplate, animated: true)
}
func showFavorites() {
// Показване на списък с любими адреси
}
}
// SiriKit Intent за гласово управление
class NavigationIntentHandler: NSObject, INSearchForMessagesIntentHandling {
func handle(intent: INSearchForMessagesIntent,
completion: @escaping (INSearchForMessagesIntentResponse) -> Void) {
// Обработка на гласова команда чрез Siri
let response = INSearchForMessagesIntentResponse(
code: .success, userActivity: nil
)
completion(response)
}
}
Ключови точки: CPTemplateApplicationSceneDelegate — входна точка за CarPlay сесия; CPInterfaceController управлява стека от шаблони; CPListTemplate и CPListItem — основни UI компоненти; .handler — манипулатор на докосване за всеки елемент от списъка.
Пример за навигационно приложение за Android Auto на Kotlin с Car App Library:
// CarAppService — входна точка за Android Auto
class NavigationCarAppService : CarAppService() {
override fun createSession(): Session = NavigationSession()
}
// Session — управление на жизнения цикъл на сесията
class NavigationSession : Session() {
override fun onCreateScreen(manager: ScreenManager): Screen {
return MainScreen(carContext)
}
}
// MainScreen — главен екран с навигация
class MainScreen(carContext: CarContext) : Screen(carContext) {
override fun onGetTemplate(): Template {
val searchAction = Action.Builder()
.setTitle("Търсене на адрес")
.setOnClickListener { showSearchScreen() }
.build()
val favoritesAction = Action.Builder()
.setTitle("Любими")
.setOnClickListener { showFavorites() }
.build()
return ListTemplate.Builder()
.setTitle("Навигация")
.setHeaderAction(Action.APP_ICON)
.addAction(searchAction)
.addAction(favoritesAction)
.build()
}
private fun showSearchScreen() {
screenManager.push(SearchScreen(carContext))
}
private fun showFavorites() {
screenManager.push(FavoritesScreen(carContext))
}
}
// AndroidManifest — регистрация на услугата
<service
android:name=".NavigationCarAppService"
android:exported="true">
<intent-filter>
<action
android:name="androidx.car.app.action.NAVIGATION" />
</intent-filter>
<category
android:name="android.intent.category.APP_AUTO" />
</service>
Ключови точки: CarAppService — входна точка за Android Auto; Session — управление на жизнения цикъл; Screen — всеки екран на приложението, връща Template; ListTemplate — шаблон за списъци с Action; category.APP_AUTO — задължителна категория в манифеста.
Изисквания за Apple CarPlay: приложението трябва да отговаря на CarPlay Distraction Design Guidelines — минимален размер на бутоните 48x48 pt, контраст на текста 4.5:1, без анимация и видео, поддръжка на VoiceOver. Публикуване — чрез App Store Connect, приложението преминава стандартна модерация от Apple. Необходимо е да посочите поддръжка на CarPlay в App Store Connect и да приложите екранни снимки на CarPlay интерфейса. CarPlay приложенията не могат да бъдат безплатни без реклами — Apple таксува комисионна от 30% (15% за малък бизнес) върху покупките в приложението.
Изисквания за Android Auto: приложението трябва да отговаря на Android Auto Design Guidelines и да премине Android Auto Compatibility Test Suite (CTS). Публикуване — чрез Google Play Console, необходимо е да посочите категория "Android Auto" в списъка на съвместимите устройства. Google Play проверява: поддръжка на тъмна тема (DayNight), правилно поведение при загуба на връзка, обработка на завъртане на екрана, поддръжка на гласово управление чрез Google Assistant. Android Auto приложенията не изискват допълнителна комисионна — стандартен модел на Google Play (15-30%).
| Параметър | Apple CarPlay | Android Auto |
|---|---|---|
| Рамка | CarPlay framework (CPInterfaceController) | Car App Library (CarAppService) |
| Език | Swift | Kotlin |
| Гласов асистент | SiriKit | Google Assistant |
| Интерфейс | CPListTemplate, CPMapTemplate | ListTemplate, MapTemplate |
| Медия | MPNowPlayingInfoCenter | MediaBrowserService |
| Навигация | CPNavigationSession | NavigationManager |
| Публикуване | App Store Connect | Google Play Console |
| Комисионна | 15–30% | 15–30% |
| Модерация | App Review (1–3 дни) | CTS + Google Play (1–4 седмици) |
Поддръжка на безжично свързване: CarPlay Wireless е достъпен от iOS 9 и изисква Wi-Fi + Bluetooth. Android Auto Wireless е достъпен от Android 11. За безжично свързване автомобилът трябва да поддържа съответния стандарт. Разработчикът не трябва да пише допълнителен код — операционната система обработва свързването автоматично.
Често задавани въпроси
Car App е оптимизиран за използване зад волана: минимален брой елементи, големи бутони, гласово управление, без въвеждане на текст. Приложението трябва да отговаря на изискванията за безопасност — Distraction Design Guidelines от Apple и Google.
CarPlay поддържа категории: навигация (Apple Maps, Google Maps, Waze), аудио (Spotify, Apple Music), съобщения (четене и диктовка чрез Siri), автомобилни функции (зареждане на EV, паркиране) и VOIP обаждания.
Използвайте Android Car App Library: имплементирайте CarAppService за входна точка, Session за управление на жизнения цикъл, Screen за всеки екран. Приложението трябва да поддържа MediaBrowserService за медия или NavigationManager за навигация.
Да, и двете платформи изискват модерация. Apple проверява CarPlay приложения чрез App Review. Android Auto изисква преминаване на Android Auto Compatibility Test Suite (CTS) и проверка в Google Play Console.
За CarPlay — Swift с CarPlay рамки (CPInterfaceController, CPTemplate, CPListItem) и SiriKit. За Android Auto — Kotlin с Car App Library и MediaBrowserService.
Обобщение
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също