사용자 및 대화 이니셔티브는 휴대전화 시스템에서 사용자 및 대화를 돋보이게 표시하는 것을 목표로 하는 다년간의 Android 이니셔티브입니다. 이러한 우선순위는 다른 사람과의 소통 및 상호작용이 모든 연령층에 걸쳐 대다수 사용자에게 여전히 가장 가치 있고 중요한 기능 영역이라는 사실을 기반으로 합니다.
Android 11에는 사람 및 대화 이니셔티브를 지원하기 위해 다양한 기능이 도입되었습니다.
대화 공간
![대화 공간은 사람 간의 실시간 대화를 위한 전용 알림 영역입니다.](https://developer.android.com/static/images/guide/topics/ui/conversations-conv-space.png?authuser=9&hl=ko)
휴대기기에서는 알림 창 상단에 사용자와의 실시간 대화 (예: 그룹 채팅을 비롯한 통화 및 채팅 메시지)만 포함하는 별도의 섹션이 있습니다. 많은 휴대전화에서 이 공간의 알림은 비대화 알림과는 다르게 표시되고 작동합니다.
- 차별화된 디자인으로, 사람을 나타내는 아바타를 강조하면서 해당 대화가 실행 중인 앱을 보여줍니다.
- 알림을 탭하면 앱에서 대화가 열리고(또는 대화가 이전에 대화창이었다면 대화창으로 표시됨), 캐럿을 탭하면 알림 창에서 새 메시지가 전체 길이로 확장되며 전체 옵션 목록이 표시됩니다.
- 다음과 같이 대화와 관련된 작업이 제공됩니다 (일부는 길게 누름).
- 이 대화를 우선순위로 표시
- 이 대화를 대화창으로 올리기(앱에서 대화창을 지원하는 경우에만 표시됨)
- 이 대화에 관한 알림 무음 설정
- 이 대화의 맞춤 알림음 또는 진동 설정
대화창의 대화
![알림이 대화 요구사항을 충족하면 플랫폼은 알림 창에서 알림을 대화창으로 실행합니다.](https://developer.android.com/static/images/guide/topics/ui/conversations-bubble.gif?authuser=9&hl=ko)
Android 11부터 대화 섹션의 알림에서 대화창을 시작할 수 있습니다. 연결된 바로가기가 있는 알림만 대화창으로 표시될 수 있습니다. 중요한 대화로 표시되거나 알림창에서 대화창으로 표시되도록 대화를 트리거하는 경우 대화가 대화창으로 자동 표시됩니다.
대화 바로가기
대화 바로가기는 런처에 표시되며 공유 시트에서 오래 지속되는 공유 바로가기와 함께 표시됩니다.
API 가이드라인
이 섹션에서는 사용자와 대화를 표시하는 시스템 제공 공간에 대한 지원을 앱에 추가하는 API를 설명합니다.
대화 바로가기
이 새로운 대화 중심 이니셔티브에 참여하려면 앱이 오래 지속되는 바로가기를 시스템에 제공해야 합니다. 오래 지속되는 공유 바로가기를 사용하는 것이 좋습니다. 필요한 경우 Android 11에서 동적 바로가기를 사용할 수 있지만, 이 옵션은 향후 삭제될 수 있습니다.
대화 바로가기를 게시하려면 ShortcutManagerCompat
메서드 setDynamicShortcuts()
, addDynamicShortcuts()
또는 pushDynamicShortcut()
을 호출합니다(이러한 메서드는 개발자를 위해 바로가기 제한을 자동으로 관리함). 이 바로가기는 오래 지속되어야 하며 한 명 이상의 사람에 관한 Person
데이터가 연결되어 대화의 다른 참여자를 식별할 수 있어야 합니다. 또한 LocusIdCompat
을 설정하는 것이 좋습니다.
대화가 더 이상 존재하지 않으면 앱은 removeLongLivedShortcuts()
를 사용하여 바로가기를 삭제할 수 있습니다. 이렇게 하면 시스템에서 대화와 관련된 모든 데이터가 삭제됩니다.
바로가기는 삭제할 수 있지만, 꼭 필요한 경우가 아니면 앱에서 캐시된 바로가기를 삭제해서는 안 됩니다. 사용자가 바로가기와 상호작용하여 환경을 변경했기 때문에 바로가기가 캐시될 수 있으며, 바로가기를 삭제하면 변경사항이 실행취소되어 사용자가 불편을 겪을 수 있습니다.
대화 알림
다음 조건을 충족하는 경우 알림은 대화 알림으로 간주됩니다.
알림에서
MessagingStyle
을 사용합니다.(앱이 Android 11 이상을 타겟팅하는 경우에만) 알림이 오래 지속되는 유효한 동적 또는 캐시된 공유 바로가기와 연결됩니다. 알림은
setShortcutId()
또는setShortcutInfo()
를 호출하여 이 연결을 설정할 수 있습니다. 앱이 Android 10 이하를 타겟팅하는 경우 대체 옵션 섹션에 설명된 대로 알림을 바로가기에 연결하지 않아도 됩니다.사용자가 게시 시점에 알림 채널 설정을 통해 대화 섹션에서 대화 순위를 내리지 않았습니다.
LocusIdCompat 사용
기기 내 인텔리전스는 사용자가 관심을 가질 가능성이 가장 큰 대화를 결정합니다. 가장 중요한 신호 중 두 가지는 각 대화에서 대화 세션의 최근 사용 및 빈도입니다. 상호작용이 적절하게 태그된 경우 시스템은 런처 바로가기에서 또는 알림 내에서 이루어진 대화와의 상호작용에 관해 알고 있습니다. 하지만, 시스템은 앱에서 이러한 상호작용이 태그되지 않는 한 완전히 앱에서 발생한 대화에 관해 알지 못합니다. 따라서 LocusIdCompat
를 바로가기에 연결하고 연결된 LocusIdCompat
로 인앱 활동 또는 프래그먼트에 주석을 지정하는 것이 좋습니다. LocusIdCompat
을 사용하여 추천 시스템에서 대화의 순위를 적절하게 지정하고 시스템이 사용자와 대화의 마지막 상호작용(인앱 상호작용 포함) 시간을 올바르게 표시하도록 설정할 수 있습니다. setShortcutInfo()
를 사용하여 대화를 바로가기와 연결하면 대화 시스템은 적절한 LocusIdCompat
을 자동으로 연결합니다.
Android 10 이하를 타겟팅하는 앱의 대화 공간 요구사항
앱이 Android 11을 타겟팅하지 않는 경우에도 메시지가 대화 공간에 계속 표시될 수 있습니다. 단 앱이 특정 요구사항을 충족해야 합니다. 이 섹션에서는 이러한 앱의 요구사항 및 앱이 요구사항을 충족하지 않는 경우의 대체 동작을 설명합니다.
메시지 공간에 참여하기 위한 핵심 요구사항은 앱이 MessagingStyle
알림을 구현하는 것과 알림을 게시할 때 알림은 게시된 알림에서 오래 지속되는 바로가기를 참조해야 한다는 것입니다. 이러한 요구사항을 충족하는 알림은 다음 동작과 함께 대화 공간에 표시됩니다.
- 알림이 대화 스타일로 표시됨
- 대화창 버튼이 제공됨(구현된 경우)
- 대화 관련 기능이 인라인으로 제공됨
알림이 이러한 요구사항을 충족하지 않으면 플랫폼에서 대체 옵션을 사용하여 알림 형식을 지정합니다. 알림이 대체 사례 중 하나의 요구사항을 충족하면 알림은 대화 공간에 특수한 형식으로 표시됩니다. 알림이 어떤 대체 옵션에도 적합하지 않으면 대화 공간에 표시되지 않습니다.
대체: MessagingStyle을 사용하지만 바로가기가 제공되지 않은 경우
앱이 Android 10 이하를 타겟팅하고 알림이 MessagingStyle
을 사용하지만 메시지를 바로가기와 연결하지 않는다면 알림은 다음 동작과 함께 대화 공간에 표시됩니다.
- 알림이 대화 스타일로 표시됨
- 제공되는 대화창 버튼 없음
- 인라인으로 제공되는 대화 관련 기능 없음
대체: MessagingStyle을 사용하지 않지만 앱이 인식된 메시지 앱인 경우
알림이 MessagingStyle
을 사용하지 않지만 플랫폼에서 앱을 메시지 앱으로 인식하고 알림의 category
매개변수가 msg
로 설정되었다면 알림은 다음 동작과 함께 대화 공간에 표시됩니다.
- 알림이 Android 11 이전 스타일로 표시됨
- 제공되는 대화창 버튼 없음
- 인라인으로 제공되는 대화 관련 기능 없음
가이드, 사용 및 테스트
이 섹션에서는 대화 기능을 사용하고 테스트하는 방법에 관한 일반적인 가이드를 제공합니다.
언제 대화를 사용해야 하나요?
대화 알림 및 관련 바로가기는 실시간 대화의 사용자 환경을 개선하기 위한 것입니다. 예를 들어 SMS, 문자 채팅 및 전화 통화는 사용자가 신속하게 의사소통하기를 기대하는 실시간 대화입니다. 사용자는 대화와 관련이 없는 이메일 및 활동에 이러한 기대를 하지 않습니다.
따라서 사용자가 적절하지 않다고 느끼는 경우 대화 섹션에서 특정 대화를 삭제할 수 있는 기능이 사용자에게 제공됩니다.
권장사항
참여도를 높이고 앱을 기반으로 한 사용자 및 대화와 더 쉽게 상호작용할 수 있도록 하려면 다음 권장사항을 따르는 것이 좋습니다.
- 부재중 전화가 우선순위 대화 창에 표시되고 대화 위젯에 올바르게 표시되도록 하려면 부재중 전화 알림의 형식을 카테고리가
CATEGORY_MISSED_CALL
로 설정된conversations
로 지정합니다. - 사용자에게 고품질 아바타(104dp)를 제공합니다. 그러지 않으면 시스템은 사용자의 이니셜을 사용하기 때문에 사용자 참여도가 낮아집니다.
- 사용자가 메시지를 확인하기 전에 대화 알림을
cancel
하면 안 됩니다. 이러한 예 중 하나는 사용자가 메시지를 볼 수 없거나 처리할 수 없는 뷰에서 앱을 열 때 알림을 취소하는 경우입니다. 사용자가 메시지를 읽거나 처리할 기회를 얻지 못하면 취소된 알림 및 관련 대화창이 삭제되어 대화 컨텍스트가 손실됩니다. - 메시지와 관련된 MIME 관련 메타데이터의
data
URI를 제공합니다. 이를 통해 알림과 관련하여 더 풍부한 환경을 제공할 수 있습니다. Android 12 status
API를 사용하여 대화 위젯의 참여도를 더 높여보세요.- 대화 바로가기에 다음 권장사항을 적용합니다.
- 알림을 푸시하지 않는 수신 및 발신 인앱 대화 바로가기를 게시합니다. 동일한 대화의 수신 및 발신 메시지의 바로가기 ID는 동일해야 합니다.
pushDynamicShortcut()
를 사용하여 바로가기와 보고서 사용량을 게시합니다. - 바로가기 아바타가 의도치 않게 잘리는 것을 방지하려면 바로가기 아이콘에
AdaptiveIconDrawable
을 제공합니다. 자세한 내용은 바로가기 이미지 제공을 참고하세요. - 시스템에서 바로가기 사용을 촉진하는 데 도움이 되도록 최고 순위 가이드라인을 준수합니다. 바로가기가 공유 바로가기인 경우 Android Sharesheet를 비롯하여 다양한 시스템 표시 경로에서 순위가 지정됩니다.
- 대화 바로가기
intents
가 관련 대화로 직접 실행되는지 확인합니다. - compat libs를 사용하여
conversation
관련 단축키로 편리하게 설정할 수 있습니다.
- 알림을 푸시하지 않는 수신 및 발신 인앱 대화 바로가기를 게시합니다. 동일한 대화의 수신 및 발신 메시지의 바로가기 ID는 동일해야 합니다.
대화 알림 및 바로가기 테스트
![대화를 길게 누르면 대화 관련 작업 메뉴가 열립니다.](https://developer.android.com/static/images/guide/topics/ui/conversations-testing.png?authuser=9&hl=ko)
대화 공간 가이드라인을 따르면 대화가 대화 공간에 자동으로 표시됩니다. 알림을 길게 눌러 바로가기가 적절하게 통합되었는지 확인할 수 있습니다. 통합이 올바르게 완료되면 UI에 대화 관련 작업이 표시됩니다. 알림이 바로가기에 연결되어 있지 않으면 UI에서 대화 기능을 지원하지 않음을 나타내는 텍스트를 표시합니다.
앱 런처를 길게 누르면 추가된 바로가기가 표시됩니다. 바로가기를 통해 앱 내에서 올바른 위치로 이동하는지 테스트해야 합니다.
공유 바로가기가 수신할 수 있는 콘텐츠를 공유할 때 추가된 공유 바로가기가 Sharesheet의 직접 공유 행에 표시됩니다.
대화 위젯
![대화 위젯에 표시된 대화](https://developer.android.com/static/images/guide/topics/ui/conversation-widgets.png?authuser=9&hl=ko)
Android 12의 대화 위젯 기능은 Android 11에 도입된 사용자 및 대화 기능을 기반으로 합니다. 이를 통해 앱이 대화 위젯에 대화 상태를 표시할 수 있습니다.
대화 위젯은 사용자가 홈 화면에서 채팅을 쉽게 열 수 있도록 하여 사용자 상호작용을 촉진합니다. 이 위젯은 사용자가 대화 상태 또는 기타 관련 정보의 스니펫을 표시하면서 사용자가 효율적으로 대화로 돌아갈 수 있도록 하는 향상된 바로가기입니다.
앱이 대화 위젯을 지원하는지 확인
앱이 대화 위젯을 지원하는지 확인하려면 최소 두 개의 Android 기기(모두 Android 12 실행)가 있어야 하며 두 개의 사용자 계정(기기마다 하나씩)으로 메시지를 교환해야 합니다. 이 절차를 설명하기 위해 계정을 각각 '사용자 A'와 '사용자 B'라고 하겠습니다.
![새 대화 위젯을 추가하는 위젯 선택 도구 UI](https://developer.android.com/static/images/guide/topics/ui/widget-picker-conversation.png?authuser=9&hl=ko)
다음 단계를 완료합니다.
- 사용자 A의 기기에서 런처를 길게 누릅니다. 위젯 선택 도구에서 그림 2와 같이 대화의 새 위젯을 탭합니다.
- 위젯을 홈 화면으로 드래그합니다. 사용자 A의 앱에서 활성 대화 또는 최근 대화 목록을 선택할 수 있어야 합니다.
- 이제 사용자 B의 기기에서 사용자 A에게 테스트 메시지를 보냅니다.
- 사용자 A의 기기로 돌아와서, 사용자 B가 보낸 메시지의 알림을 반영하도록 위젯이 업데이트되었는지 확인합니다.
- 선택사항: 사용자 A와 사용자 B가 대화를 서로 다른 상태 값으로 설정하여 위젯이 이를 적절하게 반영하도록 합니다. 상태 값 목록은 ConversationStatus를 참고하세요.