알림은 사용하고 있지 않은 앱의 이벤트에 관한 짧고 시기적절한 정보를 운전자에게 제공합니다. 알림은 알림 센터에 표시될 수도 있고 화면에 헤드업 알림으로 표시될 수도 있습니다. Android Automotive OS에 사용할 알림을 만드는 데는 다른 기기에 사용하는 것과 같은 NotificationBuilder
API를 사용합니다. 하지만 운전자의 안전을 보장하고 방해 요소를 최소화하기 위해 일부 API 메서드와 클래스는 제한되거나 다르게 동작합니다.
자동차에서 알림의 차이점
방해 요소가 없는 안전한 운전 환경을 만들기 위해 Android Automotive OS의 알림은 다음과 같은 방식으로 다른 기기의 알림과 다릅니다.
- 간소화된 사용자 상호작용
- 운전 상태에 기반한 UX 제한
간소화된 사용자 상호작용
운전자가 도로에 집중할 수 있도록 자동차 알림에는 다음 기능을 갖춘 간소화된 사용자 상호작용 모델이 적용됩니다.
복잡한 컨트롤 없음
알림은 탭하여 알림 확장, 알림을 길게 눌러 추가 옵션 보기 또는 스와이프 길이 동작에 기반한 컨트롤 사용과 같은 복잡한 컨트롤을 허용하지 않습니다.
알림 소리
알림은 헤드업 알림을 트리거할 때만 소리를 재생합니다.
메시지 알림의 자동 재생 및 음소거 버튼
Android Automotive OS는 재생 및 음소거 버튼을 모든 자동차 호환 메시지 알림에 자동으로 추가합니다.
- 재생: 사용자의 기본 디지털 어시스턴트(예: Google 어시스턴트) 또는 차량의 기본 텍스트 음성 변환 시스템을 사용하여 운전자에게 알림을 읽어 줍니다.
음소거: 남은 운전 시간 동안의 대화에서 앞으로 있을 메시지의 헤드업 알림이 표시되지 않도록 합니다. 음소거된 대화의 메시지 알림은 여전히 알림 센터에 표시되며 운전자는 알림 센터에서 대화를 음소거 해제할 수도 있습니다.
간소화된 알림 표시 옵션
RemoteViews
및 맞춤 콘텐츠 뷰는 지원되지 않습니다. 다음과 같은 알림 스타일도 지원되지 않습니다.
BigPictureStyle
BigTextStyle
InboxStyle
앱에서 이와 같은 알림 스타일 중 하나를 사용하여 Android Automotive OS에 알림을 전송하면 요약 텍스트만 표시됩니다.
간소화된 알림 채널 관리
Android Automotive OS에서는 Automotive 기기에서 리치 관리 작업의 보급을 줄이기 위해 알림 채널 및 관련 UI 어포던스를 지원하지 않습니다.
운전 상태에 기반한 UX 제한
Android Automotive OS에는 UX 제한 엔진이 포함되어 있습니다. 자동차 제조업체는 이 엔진을 사용하여 자동차의 운전 상태에 기반해 다음과 같은 방식으로 알림을 제한할 수 있습니다.
- 특정 문자 길이에서 알림 문자열 자르기
CATEGORY_MESSAGE
알림의 메시지 요약 숨기기- 알림 센터에서 표시할 수 있는 알림 수 제한
지원되는 리소스 유형
기본적으로 Android Automotive OS에서는 다른 기기에서 알림에 사용될 수 있는 제한된 일부 리소스 유형을 지원합니다. 다음과 같은 리소스 유형이 지원됩니다.
- 드로어블
- 아이콘
- 이미지
메시지 알림 호환성 요구사항
일관성 있고 방해 요소가 최소화된 사용자 환경을 제공하려면 메시지 알림에서 Android Automotive OS에 관한 특별한 요구사항을 충족해야 합니다.
메시지 알림이 다음 요구사항을 충족하면 자동차 호환 상태입니다.
CATEGORY_MESSAGE
카테고리에 속합니다.Notification.MessagingStyle
스타일을 사용합니다.- 읽지않은 메시지만 포함되어 있습니다.
다음 요구사항을 충족하는 읽음으로 표시된
Action
이 있습니다.- 시맨틱 작업이
Action.SEMANTIC_ACTION_MARK_AS_READ
로 설정되어야 합니다. Action
은 실행 시에 사용자 인터페이스를 표시하지 않음을 나타내야 합니다.
- 시맨틱 작업이
알림에 응답
Action
이 있는 경우Action
이 다음 요구사항을 충족합니다.- 시맨틱 작업이
Action.SEMANTIC_ACTION_REPLY
로 설정되어야 합니다. Action
은 실행 시에 사용자 인터페이스를 표시하지 않음을 나타내야 합니다.Action
에 단일RemoteInput
이 포함되어야 합니다.
- 시맨틱 작업이
알림 센터
헤드업 알림으로 트리거된 알림을 비롯하여 거의 모든 알림이 알림 센터에 표시됩니다. 알림은 운전 중에 알림 센터에 유지됩니다.
운전자는 알림 센터에서 알림과 상호작용할 수 있습니다. 자동차 제조업체에 따라 운전자는 다음 중 하나 또는 두 가지 방식으로 알림 센터에 액세스합니다.
- 화면 상단에서 아래로 스와이프(다른 기기의 알림 창과 유사)
- 시스템 인터페이스에서 버튼 탭하기
그룹화된 알림
관련 알림은 다른 기기의 알림 창과 같이 알림 센터에서 자동으로 그룹화됩니다. 하지만 운전자가 알림 센터에서 그룹 요약을 탭하면 PendingIntent
를 실행하는 것이 아니라 그룹이 확장되고 모든 알림을 표시합니다.
알림 센터에 표시되지 않는 알림
다음 알림은 알림 센터에 표시되지 않습니다.
CATEGORY_TRANSPORT
의 미디어 재생 알림. 진행 중인 미디어 재생 정보가 Android Automotive OS에서 수집되어 사용자 인터페이스의 전용 위치에 표시됩니다.CATEGORY_NAVIGATION
의 세부 경로 안내 내비게이션 알림- 시스템 권한 앱과 중요도 레벨이
IMPORTANCE_DEFAULT
보다 낮은 플랫폼 키로 서명된 앱의 포그라운드 서비스 알림
헤드업 알림
헤드업 알림은 화면 상단에 알림 카드로 표시됩니다. 헤드업 알림은 운전자의 주의를 끌기 때문에 앱에서는 정보가 운전에 중요하고 빨리 해결해야 하며 실행 가능할 때만 헤드업 알림을 트리거해야 합니다. 특정 카테고리의 알림만 헤드업 알림을 트리거할 수 있습니다.
자동차 제조업체는 알림 센터가 열려 있는 동안 헤드업 알림이 표시되도록 할지를 결정할 수 있습니다.
앱에서 헤드업 알림을 트리거하는 방법
앱에는 시스템 권한이 있는지에 따라 헤드업 알림을 트리거하기 위한 다양한 요구사항이 있습니다.
- 시스템 권한 앱과 플랫폼 키로 서명된 앱의 경우
- 앱에서 알림 채널 중요도를
IMPORTANCE_HIGH
이상으로 설정하여 헤드업 알림을 트리거할 수 있습니다. - 그 외 모든 앱의 경우
헤드업 알림을 트리거하려면 앱에서 알림 채널 중요도를
IMPORTANCE_HIGH
이상으로 설정하고 알림이 다음 카테고리 중 하나에 속하도록 합니다.
헤드업 알림의 수명 주기
앱에서 헤드업 알림을 트리거하면 알림이 자동차 화면에 즉시 표시됩니다. 운전자가 아무런 조치를 취하지 않으면 다음과 같은 경우를 제외하고 8초(자동차 제조업체에서 구성 가능) 후에 헤드업 알림이 자동으로 닫힙니다.
특정 수신 전화의 헤드업 알림은 닫히지 않으며 운전자가 전화를 받거나 전화가 끊길 때까지 헤드업 알림이 유지됩니다. 수신 전화의 헤드업 알림이 닫히지 않을 수 있는 자격을 얻으려면 알림이 다음 요구사항을 충족해야 합니다.
CATEGORY_CALL
에 속합니다.- 전체 화면 인텐트를 설정합니다.
setOngoing()
메서드를 사용하여 진행 중으로 표시됩니다.
헤드업 알림은 앱에서 8초 이내에 알림을 업데이트하면 유지됩니다.
헤드업 알림이 닫히면 이 알림은 CATEGORY_NAVIGATION
알림이 아닌 한 알림 센터에 나열됩니다.
자동차의 알림 API 변경 및 제한사항
이 섹션에는 알림 API가 Android Automotive OS에서 다르게 동작하거나 알림 API에 제한사항이 있는 각 클래스의 차이점이 요약되어 있습니다.
Notification.Builder
다음 표에는 Notification.Builder
클래스의 API 변경사항과 제한사항이 설명되어 있습니다.
표 1. Notification.Builder
의 공개 메서드 변경사항
공개 메서드 | 효과 | 설명 |
---|---|---|
|
조건부 무작동 | Notification.MessagingStyle 알림은 호환성 요구사항에 지정된 작업을 추가해야 합니다. 추가되는 작업은 알림 버튼으로 렌더링되지 않습니다. |
|
무작동 | RemoteViews 및 맞춤 콘텐츠 뷰는 지원되지 않습니다. |
|
무작동 | 알림 배지는 지원되지 않습니다. |
| 무작동 | 카운트다운 타이머는 지원되지 않습니다. |
setColorized() |
제약 조건 변경 |
플랫폼 서명 앱: 구성 가능하고 기본적으로 허용됩니다. 시스템 권한 앱: 플랫폼별로 구성되고 기본적으로 허용되지 않습니다. 그 외 모든 앱: 플랫폼별로 구성되고 기본적으로 허용되지 않습니다. |
setFullScreenIntent() |
동작 변경 | 인텐트를 자동 실행하지 않습니다. |
setLargeIcon() |
동작 변경 | 알림 오른쪽에 큰 아이콘이 표시됩니다. |
setLights() |
무작동 | Android Automotive OS 기기에는 LED 표시등이 없습니다. |
setOngoing() |
동작 변경 |
알림이 헤드업 알림도 트리거하는 경우 동작이 다릅니다. 헤드업 알림이 수신 전화용일 때만 헤드업 알림을 닫을 수 없습니다. 수신 전화의 헤드업 알림이 닫히지 않을 수 있는 자격을 얻으려면 알림이 다음 요구사항을 충족해야 합니다.
운전자는 그 외 모든 유형의 헤드업 알림을 닫을 수 있습니다. |
|
무작동 | 비공개 모드는 지원되지 않습니다. |
setSettingsText() |
무작동 | 알림에서는 앱 설정과 연결되는 어포던스를 지원하지 않습니다. 운전자는 대신 앱을 통해 앱 설정에 액세스합니다. |
setTicker() |
무작동 | 티커 텍스트는 지원되지 않습니다. |
표 2. Notification.Builder
의 중첩된 클래스 변경사항
중첩된 클래스 | 효과 | 설명 |
---|---|---|
|
사용되지 않음 | 요약 텍스트만 표시됩니다. 이러한 스타일에 관한 상세 알림은 지원되지 않습니다. |
Notification.BubbleMetadata |
사용되지 않음 | 버블은 지원되지 않습니다. |
Notification.MediaStyle |
숨김 | 이 스타일의 알림은 숨겨집니다. Android Automotive OS에서 미디어 알림 및 재생을 위한 사용자 인터페이스 상호작용을 관리합니다. |
Notification.MessagingStyle |
동작 변경 |
이 스타일의 알림에는 다음과 같은 차이점이 있습니다.
|
|
사용되지 않음 | 익스텐더는 지원되지 않습니다. |
Notification.Action.Builder
다음 표에는 Notification.Action.Builder
클래스의 API 변경사항과 제한사항이 설명되어 있습니다.
표 3. Notification.Action.Builder
의 공개 메서드 변경사항
공개 메서드 | 효과 | 설명 |
---|---|---|
공개 생성자 | 동작 변경 | 공개 생성자에서 지정된 아이콘은 무시됩니다. |
addRemoteInput |
동작 변경 | 운전자 주의 분산 행동이 최소화되도록 디지털 어시스턴트(예: Google 어시스턴트)는 사용자를 위해 메시지에 대한 응답을 삽입합니다. 사용자가 메시지를 입력할 수 없습니다. |
setAllowGeneratedReplies |
무작동 | 스마트 답장은 지원되지 않습니다. |