본문 바로가기
WWDC

[WWDC17] Enabling Your App for CarPlay

by 고고 2022. 3. 8.

링크: https://developer.apple.com/videos/play/wwdc2017/719/

 

Enabling Your App for CarPlay - WWDC17 - Videos - Apple Developer

Understand how to enable your audio, messaging, VoIP calling or automaker app for CarPlay. Audio, messaging and VoIP calling apps use a...

developer.apple.com

 

목차

1. CarPlay 앱이 작동하는 방법

2. 오디오 앱

3. 메세지와 VoIP 통화 앱

4. Automaker 앱

 

 

1. CarPlay 앱이 작동하는 방법

 

CarPlay에 있는 모든 앱들이 가능한 기능입니다.

 

모든 앱들은 요청하기 전에 자동으로 오디오가 재생되면 안됩니다. 또한 오디오 세션을 설정하여야 합니다.

AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers는 오디오 세션을 시작하기 전에 음성 오디오로 표시된 오디오 스트림을 일시중지합니다. 안내 음성은 다른 오디오 스트림과 혼합이 가능합니다.

 

 

CarPlay에서 가능한 앱 카테고리는 오디오, 메세징 및 VoIP 전화 앱, Automaker 앱입니다. CarPlay entitlement를 요청하고 provisioning을 설정해야 합니다.

 

 

CarPlay 화면은 차량의 디스플레이에 따라 다양한 해상도와 크기를 갖기에 특정 어셋 및 이미지에는 CarPlay 고유 어셋이 있어야 하며 2x와 3x 크기의 이미지를 제공해야 합니다.

 

오디오를 재생하는 앱의 경우 시뮬레이터에는 사용자가 실제로 경험하게 될 것을 반영하지 않는 재생 상태에 대한 몇 가지 제한이 있습니다.

iOS 시뮬레이터에서 CarPlay 앱을 테스트할 수 있지만 현실적인 결과를 얻으려면 실제 차량 헤드 유닛에 연결된 실제 장치에서 테스트하는 것이 가장 좋습니다.

Xcode는 이제 무선 디버깅을 지원하므로 앱을 디버깅하는 동안 아이폰을 차 또는 애프터마켓 헤드 유닛에 연결할 수 있습니다.

 

 

앱이 유저 데이터 또는 콘텐츠에 대한 데이터 보호를 사용하는 경우 아이폰이 암호로 잠겨 있는 동안 CarPlay의 앱이 실행될 가능성이 높다는 점을 기억하세요.

 

 

 

2. 오디오 앱

- 오디오 앱, 메세징과 voIP 전화 앱, Automaker 앱

 

 

오디오 앱 개발자는 dataSource와 Carplay 플랫폼이 화면에 렌더링할 수 있는 네비게이션 계층구조를 제공합니다.

 

 

또한 재생정보가 유저에게 관련 메타데이터와 함께 제공되어 재생속도, 트랙 및 기타 작업 등을 처리할 수 있는 명령을 제공합니다.

 

 

최소한 CarPlay가 콘텐츠 아이템을 가져오고 재생을 초기화할 수 있도록 datasource 및 delegate를 포함하는 MPPlayableContent API를 구현해야 합니다.

유저가 트랙 재생, 일시 중지 또는 스킵과 같은 명령을 수행할 수 있도록 하는 MPRemoteCommandCenter 이벤트에 응답해야 합니다.

제목, 아티스트 이름 또는 재생 시간과 같이 현재 재생 중인 아이템에 대한 메타데이터가 포함된 MPNowPlayingInfoCenter 딕셔너리를 설정하고 업데이트해야 합니다.

 

 

CarPlay는 NSIndexPath를 사용하지만 UITableView에서 사용하는 방식과는 다릅니다.

가장 왼쪽에 있는 콘테츠 항목이 루트 항목이고 UI에서 개별 탭 또는 루트 테이블 뷰로 표시될 수 있습니다.

 

 

일부 차량은 차량의 움직임 여부에 따라 제한된 콘텐츠를 화면에 표시하도록 강제할 수 있습니다.

MPPlayableContentManager로 이러한 변경사항을 고려할 수 있습니다.

 

delegate에서 테이블뷰에 허용되는 아이템 수와 앱이 표시할 수 있는 계층구조의 최대 깊이를 결정하기 위해 context의 프로퍼티를 확인할 수 있습니다.

 

 

 

앱이 탭을 사용하는 경우 info.plist 파일에 UIBrowsableContentSupportsSectionedBrowsing을 추가하여 탭을 추가할 수 있습니다.

콘텐츠가 재생되는 동안 표시되는 Now Playing 버튼을 고려하고 최대 4개의 탭을 사용하는 것이 좋습니다.

 

 

 

일반적으로 Control Center에 표시되는 컨트롤 및 데이터는 CarPlay Now Playing 화면에도 표시되어야 합니다.

이 Now Playing 화면은 사용자가 앱 네비게이션 인터페이스의 오른쪽 상단에서 Now Playing을 탭하거나 CarPlay 홈 화면에서 Now Playing 앱을 통해 접근할 수 있습니다.

 

 

NowPlayingInfo에는 다음과 같은 항목이 있습니다.

 

 

MPRemoteCommandCenter에는 재생 컨트롤을 위한 다음 기능들이 있습니다.

 

 

iOS 11부터 NowPlaying 화면에서 재생 속도를 조정하고 표시합니다. 표시하려면 MPNowPlayingInfoCenter에 MPNowPlayingInfo PropertyDefaultPlaybackRate를 추가하고 MPRemoteCommandCenter에서 supportedPlaybackRates로 changePlaybackRateCommand에 응답합니다.

 

 

 

오디오가 지원되는 가장 빠른 속도로 재생되고 사용자가 재생 속도를 조정하려는 경우 재생속도를 순환해 처음으로 되돌립니다. 1.5 -> 2.0 -> 0.5 순인거죠.

 

 

MPRemoteCommandCenter의 여러 명령에 응답할 수 있습니다. 활성화된 명령에 따라 CarPlay의 Now Playing 화면은 특정 관련 명령을 줄임표 또는 이전 트랙 버튼을 대체하는 메뉴 버튼과 같은 단일 버튼으로 결합합니다. 

 

 

주의사항

- 콘텐츠가 준비될 때 완료 핸들러를 호출하십시오.

- 탭이 없는 앱이면 루트 탭뷰에 최소 한 개의 행을 리턴하십시오.

- 앱이 초기 설정이 있는 경우, 화면에서 앱의 현재 상태를 알려주는 항목으로 첫번째 행을 채웁니다.

 

 

3. 메세지와 VoIP 통화 앱

 

메세지와 VoIP 통화 앱에 필요한 요소입니다.

 

 

메세지와 VoIP 통화 앱에 필요한 SiriKit Intent입니다.

 

 

일반적으로 앱은 수신 전화를 CallKit에 보고하고 통화 시작, 응답, 종료 작업을 처리해야합니다.

앱의 VoIP 플랫폼에서 지원하는 경우 음소거, 그룹화, 대기, 키패드 신호음과 같은 추가 작업을 처리해야 합니다.

 

 

 

알림에 대한 권한을 요청할 때 CarPlay 옵션이 포함되어야 합니다.

알림 카테고리는 메세지 전용으로 사용해야 하며 다른 앱 기능에 대한 알림은 포함하지 않아야 합니다.

알림 카테고리는 알림 선택을 처리하기 위해 SiriKit Intent를 지정해야 합니다.

메세징과 VoIP 통화 앱만 알림 표시 권한을 요청할 수 있습니다.

 

 

알림은 제목 및 부제목에 보낸 사람 및 그룹 이름과 같은 정보만 포함해야 합니다. 메세지 내용은 안됩니다.

메세지를 읽은 후 시리는 INSentMessageAttributeIntent를 사용해 콘텐츠를 읽은 것으로 표시합니다.

앱은 알림을 사용하여 부재중 전화나 메시지 전달 실패를 알려야 합니다.

 

4. Automaker 앱

 

Automaker는 커스텀 UI가 가능한 유일한 앱 카테고리입니다.

 

 

Automaker 앱의 요구사항입니다.

 

 

CarPlay앱이 지원하는 프로토콜이 자동차가 지원하는 프로토콜과 하나라도 일치해야 CarPlay 앱으로 표시됩니다. 하지만 지원되지 않는 프로토콜의 기능은 사용 불가능합니다.

 

 

외부 액세서리를 사용하여 직접 통신하면 앱의 응답성이 향상되고 인터넷 연결에 의존하지 않습니다. 이를 사용하려면 아래의 내용을 지켜야 합니다

 

 

UIScreen의 연결 이벤트를 옵저빙하고, CarPlay idiom이 있는 화면에만 CarPlay 콘텐츠를 표시합니다. 합치면 다음과 같습니다.

 

 

CarPlay에서의 UIKit은 아래의 목록처럼 iOS와 조금 다릅니다.

UIButtonTypeSystem은 CarPlay 스타일로 표시되며, 다른 CarPlay 앱과 일관된 스타일 및 동작을 제공하므로 권장합니다.

하드웨어 네비게이션 장치가 있는 차의 경우 해당 포커스 이동이 UIFocusEnvironment 및 관련 포커스 클래스를 통해 처리됩니다.

UIKit에서 제공하는 모든 시스템 UI 요소를 Automaker 앱에서 사용할 수 있는 것은 아닙니다.

 

 

Commands Intents는 모든 앱에서 사용할 수 있습니다. CarPlay 연결이 필요하지 않으며 CarPlay 앱 프로그램에 참여할 필요는 없습니다.

CarPlay Intents에는 온도 제어, 서리 제거 장치 및 시트 히터 설정, 라디오와 오디오 소스 선택이 포함됩니다.

 

 

권장사항은 다음과 같습니다.

댓글