Car App est une application pour le système d'info-divertissement automobile, intégrée avec Apple CarPlay et Android Auto. CarPlay est la technologie d'Apple qui projette l'interface de l'iPhone sur l'écran de la voiture et se contrôle via Siri, l'écran tactile ou les boutons au volant. Android Auto est la technologie similaire de Google pour les smartphones Android. Le développement de Car App comprend la création d'une application en Swift avec CarPlay framework et SiriKit pour iOS, et en Kotlin avec Car App Library, MediaBrowserService et NavigationManager pour Android. Le support de Car App devient une norme pour les véhicules modernes — selon Apple, 98% des nouvelles voitures aux États-Unis prennent en charge CarPlay, et Android Auto est disponible dans plus de 200 modèles.
Points clés
Car App est une application qui fonctionne sur le système d'info-divertissement du véhicule (IVI) via la projection du smartphone — Apple CarPlay pour iOS et Android Auto pour Android. Contrairement à Android Automotive OS (système d'exploitation intégré dans la voiture), CarPlay et Android Auto sont des extensions d'une application mobile qui s'exécutent sur le téléphone et projettent l'interface sur l'écran de la voiture. Une Car App est votre application iOS/Android existante qui implémente les protocoles CarPlay ou Android Auto.
Catégories clés de Car App : navigation (Apple Maps, Google Maps, Waze, Sygic), audio (Spotify, Apple Music, YouTube Music, Audible, Castbox), messagerie (lecture à haute voix et dictée via Siri/Google Assistant), fonctions automobiles (charge EV, stationnement, état du véhicule), appels VOIP (WhatsApp, Zoom). Chaque catégorie a son propre modèle d'interface — ListTemplate, MapTemplate, AudioTemplate. Le système lui-même détermine quelle catégorie l'application prend en charge en fonction des Intents enregistrés.
Limitations de Car App : Apple et Google contrôlent strictement l'UX pour la sécurité — nombre minimal d'éléments, grands boutons (minimum 48x48 pt), pas de saisie de texte (voix uniquement), atténuation automatique de l'interface en conduisant, interdiction de vidéo. Le temps de réponse à une pression doit être inférieur à 100 ms. Toutes les applications passent par une modération obligatoire (App Review pour CarPlay, Google Play Console + CTS pour Android Auto).
CarPlay framework (anciennement CPKit) est le framework d'Apple pour créer des applications CarPlay en Swift. La classe clé est CPInterfaceController, qui gère la navigation par modèles. CPInterfaceController contient une pile de modèles : CPListTemplate (listes), CPMapTemplate (navigation), CPNowPlayingTemplate (audio), CPVoiceControlTemplate (contrôle vocal). CPListTemplate contient CPListItem — des éléments de liste avec icône, texte et action.
SiriKit pour CarPlay — une extension SiriKit pour le contrôle vocal de l'application dans la voiture. L'application enregistre des Intents (INPlayMediaIntent — lecture, INStartWorkoutIntent — entraînement, INSendMessageIntent — messages). Siri s'active automatiquement lors de la connexion CarPlay et est disponible via le bouton de contrôle vocal au volant. SiriKit CarPlay prend en charge CarPlay Dashboard — des widgets sur l'écran d'accueil CarPlay pour afficher les informations de l'application (destination, piste en cours).
Processus de connexion CarPlay : l'iPhone se connecte à la voiture via un câble Lightning/USB-C ou sans fil (CarPlay Wireless, depuis iOS 9). Après la connexion, iOS démarre automatiquement une session CarPlay si l'application implémente CPApplicationDelegate. Le développeur ne contrôle pas le moment de la connexion — le système appelle les méthodes delegate au début et à la fin de la session. CarPlay prend en charge le multitâche : la navigation fonctionne en arrière-plan lors du passage à la musique, et les instructions vocales continuent de retentir.
Android Car App Library — une bibliothèque Android pour créer des applications compatibles avec Android Auto. Composants de base : CarAppService — point d'entrée pour Android Auto ; Session — gestion du cycle de vie de la session ; Screen — chaque écran de l'application ; CarScreenManager — gestion de l'affichage. L'application prend en charge MediaBrowserService pour le contenu multimédia et NavigationManager pour les instructions de navigation.
MediaBrowserService — un composant clé pour les applications audio. L'application implémente MediaBrowserService et MediaSession pour gérer la lecture. Android Auto affiche automatiquement les contrôles (Play/Pause, Next, Previous) et la liste des pistes. NavigationManager est utilisé pour les applications de navigation — il relaie les instructions de virage, l'état de l'itinéraire et les alertes. NavigationManager prend en charge CarNotification pour afficher les instructions de navigation dans la barre d'état d'Android Auto.
Exigences d'Android Auto : l'application doit avoir category="android.intent.category.APP_AUTO" dans le manifeste ; elle doit utiliser AndroidX et un SDK minimum 26+ ; prendre en charge le thème sombre (DayNight) ; prendre en charge le contrôle tactile et vocal ; se conformer à l'Android Auto Compatibility Test Suite (CTS). Google Play vérifie chaque application pour la conformité aux exigences de sécurité et d'UX. Le processus de certification prend 1 à 4 semaines.
Exemple d'une application de navigation pour CarPlay en Swift utilisant CarPlay framework.
import CarPlay
class CarPlaySceneDelegate: CPTemplateApplicationSceneDelegate {
func templateApplicationScene(
_ templateApplicationScene: CPTemplateApplicationScene,
didConnect interfaceController: CPInterfaceController
) {
let searchItem = CPListItem(
text: "Rechercher une adresse",
detailText: "Saisissez la destination"
)
searchItem.handler = { _, completion in
// Ouvrir l'écran de recherche
completion()
}
let favoritesItem = CPListItem(
text: "Favoris",
detailText: "Adresses sauvegardées"
)
favoritesItem.handler = { _, completion in
showFavorites()
completion()
}
let section = CPListSection(items: [searchItem, favoritesItem])
let listTemplate = CPListTemplate(
title: "Navigation",
sections: [section]
)
interfaceController.setRootTemplate(listTemplate, animated: true)
}
func showFavorites() {
// Afficher la liste des adresses favorites
}
}
// SiriKit Intent pour le contrôle vocal
class NavigationIntentHandler: NSObject, INSearchForMessagesIntentHandling {
func handle(intent: INSearchForMessagesIntent,
completion: @escaping (INSearchForMessagesIntentResponse) -> Void) {
// Traitement d'une commande vocale via Siri
let response = INSearchForMessagesIntentResponse(
code: .success, userActivity: nil
)
completion(response)
}
}
Points clés : CPTemplateApplicationSceneDelegate — point d'entrée pour la session CarPlay ; CPInterfaceController gère la pile de modèles ; CPListTemplate et CPListItem — composants d'interface de base ; .handler — gestionnaire de clic pour chaque élément de liste.
Exemple d'une application de navigation pour Android Auto en Kotlin avec Car App Library :
// CarAppService — point d'entrée pour Android Auto
class NavigationCarAppService : CarAppService() {
override fun createSession(): Session = NavigationSession()
}
// Session — gestion du cycle de vie de la session
class NavigationSession : Session() {
override fun onCreateScreen(manager: ScreenManager): Screen {
return MainScreen(carContext)
}
}
// MainScreen — écran principal avec navigation
class MainScreen(carContext: CarContext) : Screen(carContext) {
override fun onGetTemplate(): Template {
val searchAction = Action.Builder()
.setTitle("Rechercher une adresse")
.setOnClickListener { showSearchScreen() }
.build()
val favoritesAction = Action.Builder()
.setTitle("Favoris")
.setOnClickListener { showFavorites() }
.build()
return ListTemplate.Builder()
.setTitle("Navigation")
.setHeaderAction(Action.APP_ICON)
.addAction(searchAction)
.addAction(favoritesAction)
.build()
}
private fun showSearchScreen() {
screenManager.push(SearchScreen(carContext))
}
private fun showFavorites() {
screenManager.push(FavoritesScreen(carContext))
}
}
// AndroidManifest — enregistrement du service
<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>
Points clés : CarAppService — point d'entrée pour Android Auto ; Session — gestion du cycle de vie ; Screen — chaque écran de l'application, retourne un Template ; ListTemplate — modèle pour les listes avec Action ; category.APP_AUTO — catégorie obligatoire dans le manifeste.
Exigences d'Apple CarPlay : l'application doit se conformer aux CarPlay Distraction Design Guidelines — taille minimale des boutons 48x48 pt, contraste du texte 4.5:1, pas d'animation ni de vidéo, prise en charge de VoiceOver. Publication — via App Store Connect, l'application passe par la modération standard d'Apple. Il faut indiquer la prise en charge de CarPlay dans App Store Connect et joindre des captures d'écran de l'interface CarPlay. Les applications CarPlay ne peuvent pas être gratuites sans publicité — Apple prélève une commission de 30% (15% pour les petites entreprises) sur les achats intégrés.
Exigences d'Android Auto : l'application doit se conformer aux Android Auto Design Guidelines et réussir l'Android Auto Compatibility Test Suite (CTS). Publication — via Google Play Console, il faut indiquer la catégorie "Android Auto" dans la liste des appareils compatibles. Google Play vérifie : la prise en charge du thème sombre (DayNight), le comportement correct en cas de perte de connexion, la gestion de la rotation de l'écran, la prise en charge du contrôle vocal via Google Assistant. Les applications Android Auto ne nécessitent pas de commission supplémentaire — le modèle standard Google Play (15-30%).
| Paramètre | Apple CarPlay | Android Auto |
|---|---|---|
| Framework | CarPlay framework (CPInterfaceController) | Car App Library (CarAppService) |
| Langage | Swift | Kotlin |
| Assistant vocal | SiriKit | Google Assistant |
| Interface | CPListTemplate, CPMapTemplate | ListTemplate, MapTemplate |
| Médias | MPNowPlayingInfoCenter | MediaBrowserService |
| Navigation | CPNavigationSession | NavigationManager |
| Publication | App Store Connect | Google Play Console |
| Commission | 15–30% | 15–30% |
| Modération | App Review (1–3 jours) | CTS + Google Play (1–4 semaines) |
Prise en charge de la connexion sans fil : CarPlay Wireless est disponible depuis iOS 9 et nécessite Wi-Fi + Bluetooth. Android Auto Wireless est disponible depuis Android 11. Pour la connexion sans fil, la voiture doit prendre en charge la norme correspondante. Le développeur n'a pas besoin d'écrire de code supplémentaire — le système d'exploitation gère la connexion automatiquement.
Foire aux questions
Car App est optimisée pour une utilisation au volant : nombre minimal d'éléments, grands boutons, contrôle vocal, pas de saisie de texte. L'application doit respecter les exigences de sécurité — les Distraction Design Guidelines d'Apple et Google.
CarPlay prend en charge les catégories : navigation (Apple Maps, Google Maps, Waze), audio (Spotify, Apple Music), messagerie (lecture et dictée via Siri), fonctions automobiles (charge EV, stationnement) et appels VOIP.
Utilisez Android Car App Library : implémentez CarAppService comme point d'entrée, Session pour la gestion du cycle de vie, Screen pour chaque écran. L'application doit prendre en charge MediaBrowserService pour les médias ou NavigationManager pour la navigation.
Oui, les deux plateformes exigent une modération. Apple examine les applications CarPlay via App Review. Android Auto nécessite la réussite de l'Android Auto Compatibility Test Suite (CTS) et une vérification dans Google Play Console.
Pour CarPlay — Swift avec les frameworks CarPlay (CPInterfaceController, CPTemplate, CPListItem) et SiriKit. Pour Android Auto — Kotlin avec Car App Library et MediaBrowserService.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi