Car App — aplikacja dla samochodowego systemu informacyjno-rozrywkowego, integrująca się z Apple CarPlay i Android Auto. CarPlay — technologia Apple wyświetlająca interfejs iPhone'a na ekranie samochodu, sterowana przez Siri, ekran dotykowy lub przyciski na kierownicy. Android Auto — analogiczna technologia Google dla smartfonów z Androidem. Tworzenie Car App obejmuje budowę aplikacji w Swift z CarPlay framework i SiriKit dla iOS, a w Kotlin — z Car App Library, MediaBrowserService i NavigationManager dla Androida. Wsparcie Car App staje się standardem współczesnych samochodów — według Apple 98% nowych aut w USA obsługuje CarPlay, a Android Auto jest dostępny w ponad 200 modelach.
Najważniejsze
Car App — to aplikacja działająca w samochodowym systemie informacyjno-rozrywkowym (IVI) poprzez projekcję smartfona — Apple CarPlay dla iOS i Android Auto dla Androida. W przeciwieństwie do Android Automotive OS (wbudowany system operacyjny w samochodzie), CarPlay i Android Auto są rozszerzeniami aplikacji mobilnej, uruchamianymi na telefonie i wyświetlającymi interfejs na ekranie samochodu. Car App to twoja istniejąca aplikacja iOS/Android, która implementuje protokoły CarPlay lub Android Auto.
Kluczowe kategorie Car App: nawigacja (Apple Maps, Google Maps, Waze, Sygic), audio (Spotify, Apple Music, YouTube Music, Audible, Castbox), komunikaty (odczytywanie na głos i dyktowanie przez Siri/Google Assistant), funkcje samochodowe (ładowanie EV, parkowanie, stan samochodu), połączenia VOIP (WhatsApp, Zoom). Każda kategoria ma swój szablon interfejsu — ListTemplate, MapTemplate, AudioTemplate. System sam określa, którą kategorię obsługuje aplikacja, na podstawie zarejestrowanych Intents.
Ograniczenia Car App: Apple i Google ściśle kontrolują UX dla bezpieczeństwa — minimalna liczba elementów, duże przyciski (minimum 48x48 pt), brak wprowadzania tekstu (tylko głos), automatyczne przyciemnianie interfejsu podczas jazdy, zakaz wideo. Czas reakcji na dotknięcie musi być mniejszy niż 100 ms. Wszystkie aplikacje przechodzą obowiązkową moderację (App Review dla CarPlay, Google Play Console + CTS dla Android Auto).
CarPlay framework (dawniej CPKit) — framework Apple do tworzenia aplikacji CarPlay w Swift. Kluczowa klasa — CPInterfaceController, zarządzająca nawigacją po szablonach. CPInterfaceController zawiera stos szablonów: CPListTemplate (listy), CPMapTemplate (nawigacja), CPNowPlayingTemplate (audio), CPVoiceControlTemplate (sterowanie głosowe). CPListTemplate zawiera CPListItem — elementy listy z ikoną, tekstem i akcją.
SiriKit dla CarPlay — rozszerzenie SiriKit do głosowego sterowania aplikacją w samochodzie. Aplikacja rejestruje Intents (INPlayMediaIntent — odtwarzanie, INStartWorkoutIntent — trening, INSendMessageIntent — komunikaty). Siri aktywuje się automatycznie po podłączeniu CarPlay i jest dostępna przez przycisk sterowania głosowego na kierownicy. SiriKit CarPlay obsługuje CarPlay Dashboard — widżety na głównym ekranie CarPlay do wyświetlania informacji z aplikacji (cel podróży, bieżący utwór).
Proces podłączania CarPlay: iPhone łączy się z samochodem przez kabel Lightning/USB-C lub bezprzewodowo (CarPlay Wireless, od iOS 9). Po podłączeniu iOS automatycznie uruchamia sesję CarPlay, jeśli aplikacja implementuje CPApplicationDelegate. Deweloper nie zarządza momentem podłączenia — system wywołuje metody delegate przy starcie i zakończeniu sesji. CarPlay obsługuje multitasking: nawigacja działa w tle podczas przełączania na muzykę, a wskazówki głosowe nadal brzmią.
Android Car App Library — biblioteka Androida do tworzenia aplikacji kompatybilnych z Android Auto. Podstawowe komponenty: CarAppService — punkt wejścia dla Android Auto; Session — zarządzanie cyklem życia sesji; Screen — każdy ekran aplikacji; CarScreenManager — zarządzanie wyświetlaniem. Aplikacja obsługuje MediaBrowserService dla treści multimedialnych i NavigationManager dla wskazówek nawigacyjnych.
MediaBrowserService — kluczowy komponent dla aplikacji audio. Aplikacja implementuje MediaBrowserService i MediaSession do zarządzania odtwarzaniem. Android Auto automatycznie wyświetla elementy sterujące (Play/Pause, Next, Previous) i listę utworów. NavigationManager jest używany dla aplikacji nawigacyjnych — przekazuje instrukcje skrętu, status trasy i alerty. NavigationManager obsługuje CarNotification do wyświetlania wskazówek nawigacyjnych na pasku stanu Android Auto.
Wymagania Android Auto: aplikacja musi mieć category="android.intent.category.APP_AUTO" w manifeście; obowiązkowe użycie AndroidX i minimalny SDK 26+; obsługa ciemnego motywu (DayNight); obsługa sterowania dotykowego i głosowego; zgodność z Android Auto Compatibility Test Suite (CTS). Google Play sprawdza każdą aplikację pod kątem wymogów bezpieczeństwa i UX. Proces certyfikacji trwa 1–4 tygodnie.
Przykład aplikacji nawigacyjnej dla CarPlay w Swift z wykorzystaniem CarPlay framework.
import CarPlay
class CarPlaySceneDelegate: CPTemplateApplicationSceneDelegate {
func templateApplicationScene(
_ templateApplicationScene: CPTemplateApplicationScene,
didConnect interfaceController: CPInterfaceController
) {
let searchItem = CPListItem(
text: "Wyszukiwanie adresu",
detailText: "Wprowadź cel podróży"
)
searchItem.handler = { _, completion in
// Otwieramy ekran wyszukiwania
completion()
}
let favoritesItem = CPListItem(
text: "Ulubione",
detailText: "Zapisane adresy"
)
favoritesItem.handler = { _, completion in
showFavorites()
completion()
}
let section = CPListSection(items: [searchItem, favoritesItem])
let listTemplate = CPListTemplate(
title: "Nawigacja",
sections: [section]
)
interfaceController.setRootTemplate(listTemplate, animated: true)
}
func showFavorites() {
// Wyświetlanie listy zapisanych adresów
}
}
// SiriKit Intent do sterowania głosowego
class NavigationIntentHandler: NSObject, INSearchForMessagesIntentHandling {
func handle(intent: INSearchForMessagesIntent,
completion: @escaping (INSearchForMessagesIntentResponse) -> Void) {
// Przetwarzanie polecenia głosowego przez Siri
let response = INSearchForMessagesIntentResponse(
code: .success, userActivity: nil
)
completion(response)
}
}
Kluczowe punkty: CPTemplateApplicationSceneDelegate — punkt wejścia dla sesji CarPlay; CPInterfaceController zarządza stosem szablonów; CPListTemplate i CPListItem — podstawowe komponenty UI; .handler — procedura obsługi dotknięcia dla każdego elementu listy.
Przykład aplikacji nawigacyjnej dla Android Auto w Kotlin z Car App Library:
// CarAppService — punkt wejścia dla Android Auto
class NavigationCarAppService : CarAppService() {
override fun createSession(): Session = NavigationSession()
}
// Session — zarządzanie cyklem życia sesji
class NavigationSession : Session() {
override fun onCreateScreen(manager: ScreenManager): Screen {
return MainScreen(carContext)
}
}
// MainScreen — ekran główny z nawigacją
class MainScreen(carContext: CarContext) : Screen(carContext) {
override fun onGetTemplate(): Template {
val searchAction = Action.Builder()
.setTitle("Wyszukiwanie adresu")
.setOnClickListener { showSearchScreen() }
.build()
val favoritesAction = Action.Builder()
.setTitle("Ulubione")
.setOnClickListener { showFavorites() }
.build()
return ListTemplate.Builder()
.setTitle("Nawigacja")
.setHeaderAction(Action.APP_ICON)
.addAction(searchAction)
.addAction(favoritesAction)
.build()
}
private fun showSearchScreen() {
screenManager.push(SearchScreen(carContext))
}
private fun showFavorites() {
screenManager.push(FavoritesScreen(carContext))
}
}
// AndroidManifest — rejestracja usługi
<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>
Kluczowe punkty: CarAppService — punkt wejścia dla Android Auto; Session — zarządzanie cyklem życia; Screen — każdy ekran aplikacji, zwraca Template; ListTemplate — szablon dla list z Action; category.APP_AUTO — obowiązkowa kategoria w manifeście.
Wymagania Apple CarPlay: aplikacja musi spełniać CarPlay Distraction Design Guidelines — minimalny rozmiar przycisków 48x48 pt, kontrast tekstu 4.5:1, brak animacji i wideo, obsługa VoiceOver. Publikacja — przez App Store Connect, aplikacja przechodzi standardową moderację Apple. Należy wskazać obsługę CarPlay w App Store Connect i dołączyć zrzuty ekranu interfejsu CarPlay. Aplikacje CarPlay nie mogą być darmowe bez reklam — Apple pobiera prowizję 30% (15% dla małych firm) od zakupów wewnątrz aplikacji.
Wymagania Android Auto: aplikacja musi spełniać Android Auto Design Guidelines i przejść Android Auto Compatibility Test Suite (CTS). Publikacja — przez Google Play Console, należy wskazać kategorię "Android Auto" na liście kompatybilnych urządzeń. Google Play sprawdza: obsługę ciemnego motywu (DayNight), poprawne zachowanie przy utracie połączenia, obsługę obrotu ekranu, obsługę sterowania głosowego przez Google Assistant. Aplikacje Android Auto nie wymagają dodatkowej prowizji — standardowy model Google Play (15-30%).
| Parametr | Apple CarPlay | Android Auto |
|---|---|---|
| Framework | CarPlay framework (CPInterfaceController) | Car App Library (CarAppService) |
| Język | Swift | Kotlin |
| Asystent głosowy | SiriKit | Google Assistant |
| Interfejs | CPListTemplate, CPMapTemplate | ListTemplate, MapTemplate |
| Media | MPNowPlayingInfoCenter | MediaBrowserService |
| Nawigacja | CPNavigationSession | NavigationManager |
| Publikacja | App Store Connect | Google Play Console |
| Prowizja | 15–30% | 15–30% |
| Moderacja | App Review (1–3 dni) | CTS + Google Play (1–4 tygodnie) |
Obsługa połączenia bezprzewodowego: CarPlay Wireless dostępny od iOS 9 i wymaga Wi-Fi + Bluetooth. Android Auto Wireless dostępny od Android 11. Do połączenia bezprzewodowego samochód musi obsługiwać odpowiedni standard. Deweloper nie musi pisać dodatkowego kodu — system operacyjny obsługuje połączenie automatycznie.
Często zadawane pytania
Car App jest zoptymalizowane do użytku za kierownicą: minimalna liczba elementów, duże przyciski, sterowanie głosowe, brak wprowadzania tekstu. Aplikacja musi spełniać wymogi bezpieczeństwa — Distraction Design Guidelines od Apple i Google.
CarPlay obsługuje kategorie: nawigacja (Apple Maps, Google Maps, Waze), audio (Spotify, Apple Music), komunikaty (czytanie i dyktowanie przez Siri), funkcje samochodowe (ładowanie EV, parkowanie) i połączenia VOIP.
Użyj Android Car App Library: zaimplementuj CarAppService jako punkt wejścia, Session do zarządzania cyklem życia, Screen dla każdego ekranu. Aplikacja musi obsługiwać MediaBrowserService dla multimediów lub NavigationManager dla nawigacji.
Tak, obie platformy wymagają moderacji. Apple sprawdza aplikacje CarPlay przez App Review. Android Auto wymaga przejścia Android Auto Compatibility Test Suite (CTS) i weryfikacji w Google Play Console.
Dla CarPlay — Swift z frameworkami CarPlay (CPInterfaceController, CPTemplate, CPListItem) i SiriKit. Dla Android Auto — Kotlin z Car App Library i MediaBrowserService.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również