Car App: суштина развоја за CarPlay и Android Auto

Аутор: IT Sectr Објављено: 2026-02-15 Време читања: 9 мин

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 — апликација за CarPlay (iOS) и Android Auto (Android), оптимизована за употребу за воланом
  • Apple CarPlay — пројектовање интерфејса iPhone-а на екран аутомобила, управљање преко Siri и додира
  • Android Auto — пројектовање Android паметног телефона на екран аутомобила са подршком за Google Assistant
  • CarPlay framework — CPInterfaceController, CPTemplate, CPListItem за изградњу интерфејса на Swift-у
  • Car App Library — Android библиотека за креирање Automotive апликација са MediaBrowserService и NavigationManager

Шта је Car App

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).

Apple CarPlay: CarPlay framework и SiriKit

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 Auto: Car App Library

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 недеље.

Примери кода: Swift и Kotlin

Пример навигационе апликације за CarPlay на Swift-у коришћењем CarPlay framework-а.

swift
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:

kotlin
// 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 CarPlayAndroid Auto
ОквирCarPlay framework (CPInterfaceController)Car App Library (CarAppService)
ЈезикSwiftKotlin
Гласовни асистентSiriKitGoogle Assistant
ИнтерфејсCPListTemplate, CPMapTemplateListTemplate, MapTemplate
МедијаMPNowPlayingInfoCenterMediaBrowserService
НавигацијаCPNavigationSessionNavigationManager
ОбјављивањеApp Store ConnectGoogle 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 разликује од мобилне апликације?

Car App је оптимизован за употребу за воланом: минималан број елемената, велика дугмад, гласовно управљање, без уноса текста. Апликација мора да испуњава безбедносне захтеве — Distraction Design Guidelines од Apple-а и Google-а.

Које категорије апликација су доступне за CarPlay?

CarPlay подржава категорије: навигација (Apple Maps, Google Maps, Waze), аудио (Spotify, Apple Music), поруке (читање и диктирање преко Siri), аутомобилске функције (пуњење EV, паркинг) и VOIP позиве.

Како развити апликацију за Android Auto?

Користите Android Car App Library: имплементирајте CarAppService за улазну тачку, Session за управљање животним циклусом, Screen за сваки екран. Апликација мора да подржава MediaBrowserService за медије или NavigationManager за навигацију.

Да ли је потребна модерација Car App-а?

Да, обе платформе захтевају модерацију. Apple проверава CarPlay апликације кроз App Review. Android Auto захтева пролазак Android Auto Compatibility Test Suite (CTS) и проверу у Google Play Console-у.

Који језици се користе за Car App?

За CarPlay — Swift са CarPlay оквирима (CPInterfaceController, CPTemplate, CPListItem) и SiriKit. За Android Auto — Kotlin са Car App Library и MediaBrowserService.

Закључци

  • Car App — апликација за CarPlay (iOS) и Android Auto (Android), оптимизована за безбедну употребу за воланом
  • Apple CarPlay користи CarPlay framework са CPInterfaceController, CPListTemplate и SiriKit за гласовно управљање
  • Android Auto користи Car App Library са CarAppService, Session, Screen и MediaBrowserService за медије
  • Гласовно управљање — Siri (CarPlay) и Google Assistant (Android Auto) су обавезни за навигацију и поруке
  • UX ограничења — велика дугмад 48x48 pt, минимум елемената, забрана видеа, реакција мања од 100 ms
  • Модерација — App Store (1–3 дана) и Google Play CTS (1–4 недеље) са провером безбедности и UX
  • Бежично повезивање — CarPlay Wireless (iOS 9+) и Android Auto Wireless (Android 11+) доступни без кабла

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође