Car App — Apple CarPlay 및 Android Auto와 통합되는 차량용 인포테인먼트 시스템 애플리케이션입니다. CarPlay는 iPhone 인터페이스를 자동차 화면에 투사하고 Siri, 터치 스크린 또는 스티어링 휠 버튼을 통해 제어되는 Apple의 기술입니다. Android Auto는 Android 스마트폰을 위한 Google의 유사한 기술입니다. Car App 개발에는 iOS용 Swift로 CarPlay framework 및 SiriKit을 사용한 애플리케이션 생성과 Android용 Kotlin으로 Car App Library, MediaBrowserService 및 NavigationManager를 사용한 애플리케이션 생성이 포함됩니다. Car App 지원은 현대 자동차의 표준이 되고 있습니다 — Apple에 따르면 미국 신차의 98%가 CarPlay를 지원하며, Android Auto는 200개 이상의 모델에서 사용 가능합니다.
주요 포인트
Car App — 스마트폰 투사를 통해 차량용 인포테인먼트 시스템(IVI)에서 작동하는 애플리케이션입니다 — iOS용 Apple CarPlay 및 Android용 Android Auto. Android Automotive OS(차량 내장 OS)와 달리 CarPlay와 Android Auto는 모바일 애플리케이션의 확장으로, 전화에서 실행되고 인터페이스를 자동차 화면에 투사합니다. Car App은 CarPlay 또는 Android Auto 프로토콜을 구현하는 기존 iOS/Android 앱입니다.
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), 텍스트 입력 없음(음성만), 운전 중 자동 인터페이스 어두워짐, 비디오 금지. 누름에 대한 응답 시간은 100ms 미만이어야 합니다. 모든 애플리케이션은 필수 검토를 거칩니다(CarPlay의 경우 App Review, Android Auto의 경우 Google Play Console + CTS).
CarPlay framework(이전 CPKit) — Swift로 CarPlay 애플리케이션을 만들기 위한 Apple의 프레임워크입니다. 핵심 클래스는 CPInterfaceController로, 템플릿 탐색을 관리합니다. CPInterfaceController에는 템플릿 스택이 포함됩니다: CPListTemplate(목록), CPMapTemplate(내비게이션), CPNowPlayingTemplate(오디오), CPVoiceControlTemplate(음성 제어). CPListTemplate에는 CPListItem이 포함됩니다 — 아이콘, 텍스트 및 작업이 있는 목록 항목입니다.
CarPlay용 SiriKit — 차량 내 애플리케이션의 음성 제어를 위한 SiriKit 확장입니다. 애플리케이션은 Intents를 등록합니다(INPlayMediaIntent — 재생, INStartWorkoutIntent — 운동, INSendMessageIntent — 메시지). CarPlay 연결 시 Siri가 자동으로 활성화되며 스티어링 휠의 음성 제어 버튼을 통해 사용할 수 있습니다. SiriKit CarPlay는 CarPlay Dashboard를 지원합니다 — CarPlay 홈 화면에 애플리케이션의 정보(목적지, 현재 트랙)를 표시하는 위젯입니다.
CarPlay 연결 프로세스: iPhone은 Lightning/USB-C 케이블 또는 무선(CarPlay Wireless, iOS 9부터)으로 자동차에 연결됩니다. 연결 후 애플리케이션이 CPApplicationDelegate를 구현하는 경우 iOS가 자동으로 CarPlay 세션을 시작합니다. 개발자는 연결 시점을 제어하지 않습니다 — 시스템이 세션 시작 및 종료 시 delegate 메서드를 호출합니다. CarPlay는 멀티태스킹을 지원합니다: 음악으로 전환해도 내비게이션이 백그라운드에서 작동하며 음성 안내가 계속 울립니다.
Android Car App Library — Android Auto와 호환되는 애플리케이션을 만들기 위한 Android 라이브러리입니다. 기본 구성 요소: CarAppService — Android Auto의 진입점; Session — 세션 수명 주기 관리; Screen — 애플리케이션의 각 화면; CarScreenManager — 디스플레이 관리. 애플리케이션은 미디어 콘텐츠용 MediaBrowserService와 내비게이션 안내용 NavigationManager를 지원합니다.
MediaBrowserService — 오디오 애플리케이션의 핵심 구성 요소입니다. 애플리케이션은 재생을 관리하기 위해 MediaBrowserService와 MediaSession을 구현합니다. Android Auto가 자동으로 컨트롤(재생/일시정지, 다음, 이전)과 트랙 목록을 표시합니다. NavigationManager는 내비게이션 애플리케이션에 사용됩니다 — 회전 지시, 경로 상태 및 알림을 전달합니다. NavigationManager는 Android Auto 상태 표시줄에 내비게이션 안내를 표시하기 위한 CarNotification을 지원합니다.
Android Auto 요구 사항: 애플리케이션 매니페스트에 category="android.intent.category.APP_AUTO"가 있어야 함; AndroidX 및 최소 SDK 26+ 사용 필수; 다크 테마(DayNight) 지원; 터치 및 음성 제어 지원; Android Auto Compatibility Test Suite(CTS) 준수. Google Play는 보안 및 UX 요구 사항 준수 여부를 각 애플리케이션에 대해 확인합니다. 인증 프로세스는 1~4주가 소요됩니다.
CarPlay framework를 사용한 Swift의 CarPlay용 내비게이션 애플리케이션 예제입니다.
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 — 각 목록 항목의 클릭 핸들러.
Car App Library를 사용한 Kotlin의 Android Auto용 내비게이션 애플리케이션 예제:
// 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 검토를 거칩니다. App Store Connect에서 CarPlay 지원을 지정하고 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부터 사용 가능합니다. 무선 연결을 위해 자동차가 해당 표준을 지원해야 합니다. 개발자는 추가 코드를 작성할 필요가 없습니다 — OS가 자동으로 연결을 처리합니다.
자주 묻는 질문
Car App은 운전 중 사용에 최적화되어 있습니다: 최소 요소 수, 큰 버튼, 음성 제어, 텍스트 입력 없음. 애플리케이션은 안전 요구 사항을 준수해야 합니다 — Apple 및 Google의 Distraction Design Guidelines.
CarPlay는 카테고리를 지원합니다: 내비게이션(Apple Maps, Google Maps, Waze), 오디오(Spotify, Apple Music), 메시징(Siri를 통한 읽기 및 받아쓰기), 자동차 기능(EV 충전, 주차) 및 VOIP 통화.
Android Car App Library를 사용하세요: 진입점으로 CarAppService, 수명 주기 관리용 Session, 각 화면용 Screen을 구현합니다. 애플리케이션은 미디어용 MediaBrowserService 또는 내비게이션용 NavigationManager를 지원해야 합니다.
네, 두 플랫폼 모두 검토가 필요합니다. Apple은 App Review를 통해 CarPlay 애플리케이션을 검토합니다. 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는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.