Car App è un'applicazione per il sistema di infotainment dell'auto, integrata con Apple CarPlay e Android Auto. CarPlay è la tecnologia di Apple che proietta l'interfaccia dell'iPhone sullo schermo dell'auto e viene controllata tramite Siri, touch screen o pulsanti al volante. Android Auto è la tecnologia simile di Google per smartphone Android. Lo sviluppo di Car App include la creazione di un'app in Swift con CarPlay framework e SiriKit per iOS, e in Kotlin con Car App Library, MediaBrowserService e NavigationManager per Android. Il supporto Car App sta diventando uno standard per le auto moderne — secondo Apple, il 98% delle nuove auto negli USA supporta CarPlay e Android Auto è disponibile in più di 200 modelli.
Punti chiave
Car App è un'applicazione che funziona sul sistema di infotainment del veicolo (IVI) tramite proiezione dello smartphone — Apple CarPlay per iOS e Android Auto per Android. A differenza di Android Automotive OS (sistema operativo integrato nell'auto), CarPlay e Android Auto sono estensioni di un'applicazione mobile che vengono eseguite sul telefono e proiettano l'interfaccia sullo schermo dell'auto. Una Car App è la tua applicazione iOS/Android esistente che implementa i protocolli CarPlay o Android Auto.
Categorie chiave di Car App: navigazione (Apple Maps, Google Maps, Waze, Sygic), audio (Spotify, Apple Music, YouTube Music, Audible, Castbox), messaggistica (lettura ad alta voce e dettatura tramite Siri/Google Assistant), funzioni automobilistiche (ricarica EV, parcheggio, stato del veicolo), chiamate VOIP (WhatsApp, Zoom). Ogni categoria ha il proprio modello di interfaccia — ListTemplate, MapTemplate, AudioTemplate. Il sistema stesso determina quale categoria l'app supporta in base agli Intents registrati.
Limitazioni di Car App: Apple e Google controllano rigorosamente l'UX per la sicurezza — numero minimo di elementi, pulsanti grandi (minimo 48x48 pt), nessun input di testo (solo voce), oscuramento automatico dell'interfaccia durante la guida, nessun video. Il tempo di risposta alla pressione deve essere inferiore a 100 ms. Tutte le applicazioni sono sottoposte a moderazione obbligatoria (App Review per CarPlay, Google Play Console + CTS per Android Auto).
CarPlay framework (precedentemente CPKit) è il framework di Apple per creare applicazioni CarPlay in Swift. La classe chiave è CPInterfaceController, che gestisce la navigazione tra modelli. CPInterfaceController contiene uno stack di modelli: CPListTemplate (elenchi), CPMapTemplate (navigazione), CPNowPlayingTemplate (audio), CPVoiceControlTemplate (controllo vocale). CPListTemplate contiene CPListItem — elementi di elenco con icona, testo e azione.
SiriKit per CarPlay — un'estensione SiriKit per il controllo vocale dell'app in auto. L'app registra Intents (INPlayMediaIntent — riproduzione, INStartWorkoutIntent — allenamento, INSendMessageIntent — messaggi). Siri si attiva automaticamente alla connessione CarPlay ed è disponibile tramite il pulsante di controllo vocale al volante. SiriKit CarPlay supporta CarPlay Dashboard — widget sulla schermata principale di CarPlay per visualizzare informazioni dall'app (destinazione, traccia corrente).
Processo di connessione CarPlay: l'iPhone si collega all'auto tramite cavo Lightning/USB-C o in modalità wireless (CarPlay Wireless, da iOS 9). Dopo la connessione, iOS avvia automaticamente una sessione CarPlay se l'app implementa CPApplicationDelegate. Lo sviluppatore non controlla il momento della connessione — il sistema chiama i metodi delegate all'avvio e al termine della sessione. CarPlay supporta il multitasking: la navigazione funziona in background quando si passa alla musica e i suggerimenti vocali continuano a suonare.
Android Car App Library — una libreria Android per creare applicazioni compatibili con Android Auto. Componenti di base: CarAppService — punto di ingresso per Android Auto; Session — gestione del ciclo di vita della sessione; Screen — ogni schermata dell'app; CarScreenManager — gestione della visualizzazione. L'app supporta MediaBrowserService per i contenuti multimediali e NavigationManager per le indicazioni di navigazione.
MediaBrowserService — un componente chiave per le applicazioni audio. L'app implementa MediaBrowserService e MediaSession per gestire la riproduzione. Android Auto visualizza automaticamente i controlli (Play/Pause, Next, Previous) e l'elenco delle tracce. NavigationManager viene utilizzato per le applicazioni di navigazione — trasmette istruzioni di svolta, stato del percorso e avvisi. NavigationManager supporta CarNotification per visualizzare le indicazioni di navigazione nella barra di stato di Android Auto.
Requisiti di Android Auto: l'app deve avere category="android.intent.category.APP_AUTO" nel manifest; deve utilizzare AndroidX e SDK minimo 26+; supportare il tema scuro (DayNight); supportare il controllo tattile e vocale; conformarsi all'Android Auto Compatibility Test Suite (CTS). Google Play verifica ogni applicazione per la conformità ai requisiti di sicurezza e UX. Il processo di certificazione richiede 1–4 settimane.
Esempio di un'app di navigazione per CarPlay in Swift utilizzando CarPlay framework.
import CarPlay
class CarPlaySceneDelegate: CPTemplateApplicationSceneDelegate {
func templateApplicationScene(
_ templateApplicationScene: CPTemplateApplicationScene,
didConnect interfaceController: CPInterfaceController
) {
let searchItem = CPListItem(
text: "Cerca indirizzo",
detailText: "Inserisci destinazione"
)
searchItem.handler = { _, completion in
// Aprire la schermata di ricerca
completion()
}
let favoritesItem = CPListItem(
text: "Preferiti",
detailText: "Indirizzi salvati"
)
favoritesItem.handler = { _, completion in
showFavorites()
completion()
}
let section = CPListSection(items: [searchItem, favoritesItem])
let listTemplate = CPListTemplate(
title: "Navigazione",
sections: [section]
)
interfaceController.setRootTemplate(listTemplate, animated: true)
}
func showFavorites() {
// Visualizzare l'elenco degli indirizzi preferiti
}
}
// SiriKit Intent per il controllo vocale
class NavigationIntentHandler: NSObject, INSearchForMessagesIntentHandling {
func handle(intent: INSearchForMessagesIntent,
completion: @escaping (INSearchForMessagesIntentResponse) -> Void) {
// Elaborazione del comando vocale tramite Siri
let response = INSearchForMessagesIntentResponse(
code: .success, userActivity: nil
)
completion(response)
}
}
Punti chiave: CPTemplateApplicationSceneDelegate — punto di ingresso per la sessione CarPlay; CPInterfaceController gestisce lo stack di modelli; CPListTemplate e CPListItem — componenti UI di base; .handler — gestore del clic per ogni elemento dell'elenco.
Esempio di un'app di navigazione per Android Auto in Kotlin con Car App Library:
// CarAppService — punto di ingresso per Android Auto
class NavigationCarAppService : CarAppService() {
override fun createSession(): Session = NavigationSession()
}
// Session — gestione del ciclo di vita della sessione
class NavigationSession : Session() {
override fun onCreateScreen(manager: ScreenManager): Screen {
return MainScreen(carContext)
}
}
// MainScreen — schermata principale con navigazione
class MainScreen(carContext: CarContext) : Screen(carContext) {
override fun onGetTemplate(): Template {
val searchAction = Action.Builder()
.setTitle("Cerca indirizzo")
.setOnClickListener { showSearchScreen() }
.build()
val favoritesAction = Action.Builder()
.setTitle("Preferiti")
.setOnClickListener { showFavorites() }
.build()
return ListTemplate.Builder()
.setTitle("Navigazione")
.setHeaderAction(Action.APP_ICON)
.addAction(searchAction)
.addAction(favoritesAction)
.build()
}
private fun showSearchScreen() {
screenManager.push(SearchScreen(carContext))
}
private fun showFavorites() {
screenManager.push(FavoritesScreen(carContext))
}
}
// AndroidManifest — registrazione del servizio
<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>
Punti chiave: CarAppService — punto di ingresso per Android Auto; Session — gestione del ciclo di vita; Screen — ogni schermata dell'app, restituisce un Template; ListTemplate — modello per elenchi con Action; category.APP_AUTO — categoria obbligatoria nel manifest.
Requisiti di Apple CarPlay: l'app deve rispettare le CarPlay Distraction Design Guidelines — dimensione minima dei pulsanti 48x48 pt, contrasto del testo 4.5:1, nessuna animazione o video, supporto VoiceOver. Pubblicazione — tramite App Store Connect, l'app viene sottoposta alla moderazione standard di Apple. È necessario indicare il supporto CarPlay in App Store Connect e allegare screenshot dell'interfaccia CarPlay. Le app CarPlay non possono essere gratuite senza pubblicità — Apple addebita una commissione del 30% (15% per le piccole imprese) sugli acquisti in-app.
Requisiti di Android Auto: l'app deve rispettare le Android Auto Design Guidelines e superare l'Android Auto Compatibility Test Suite (CTS). Pubblicazione — tramite Google Play Console, è necessario indicare la categoria "Android Auto" nell'elenco dei dispositivi compatibili. Google Play verifica: supporto del tema scuro (DayNight), comportamento corretto in caso di perdita di connessione, gestione della rotazione dello schermo, supporto del controllo vocale tramite Google Assistant. Le app Android Auto non richiedono commissioni aggiuntive — il modello standard Google Play (15-30%).
| Parametro | Apple CarPlay | Android Auto |
|---|---|---|
| Framework | CarPlay framework (CPInterfaceController) | Car App Library (CarAppService) |
| Linguaggio | Swift | Kotlin |
| Assistente vocale | SiriKit | Google Assistant |
| Interfaccia | CPListTemplate, CPMapTemplate | ListTemplate, MapTemplate |
| Multimedia | MPNowPlayingInfoCenter | MediaBrowserService |
| Navigazione | CPNavigationSession | NavigationManager |
| Pubblicazione | App Store Connect | Google Play Console |
| Commissione | 15–30% | 15–30% |
| Moderazione | App Review (1–3 giorni) | CTS + Google Play (1–4 settimane) |
Supporto connessione wireless: CarPlay Wireless è disponibile da iOS 9 e richiede Wi-Fi + Bluetooth. Android Auto Wireless è disponibile da Android 11. Per la connessione wireless, l'auto deve supportare lo standard corrispondente. Lo sviluppatore non deve scrivere codice aggiuntivo — il sistema operativo gestisce la connessione automaticamente.
Domande frequenti
Car App è ottimizzata per l'uso alla guida: numero minimo di elementi, pulsanti grandi, controllo vocale, nessun input di testo. L'app deve rispettare i requisiti di sicurezza — le Distraction Design Guidelines di Apple e Google.
CarPlay supporta le categorie: navigazione (Apple Maps, Google Maps, Waze), audio (Spotify, Apple Music), messaggistica (lettura e dettatura tramite Siri), funzioni automobilistiche (ricarica EV, parcheggio) e chiamate VOIP.
Usa Android Car App Library: implementa CarAppService come punto di ingresso, Session per la gestione del ciclo di vita, Screen per ogni schermata. L'app deve supportare MediaBrowserService per i contenuti multimediali o NavigationManager per la navigazione.
Sì, entrambe le piattaforme richiedono moderazione. Apple verifica le app CarPlay tramite App Review. Android Auto richiede il superamento dell'Android Auto Compatibility Test Suite (CTS) e la verifica in Google Play Console.
Per CarPlay — Swift con i framework CarPlay (CPInterfaceController, CPTemplate, CPListItem) e SiriKit. Per Android Auto — Kotlin con Car App Library e MediaBrowserService.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche