diff options
Diffstat (limited to 'docs/html-intl/intl/ko/design/patterns')
3 files changed, 1155 insertions, 0 deletions
diff --git a/docs/html-intl/intl/ko/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/ko/design/patterns/confirming-acknowledging.jd new file mode 100644 index 0000000..2444b0e --- /dev/null +++ b/docs/html-intl/intl/ko/design/patterns/confirming-acknowledging.jd @@ -0,0 +1,70 @@ +page.title=확인 및 승인하기 +page.tags=dialog,toast,notification +@jd:body + +<p>사용자가 앱에서 작업을 호출할 때와 같은 몇몇 상황에서는 텍스트를 통해 해당 작업을 <em>확인</em>하거나 <em>승인</em>하는 것이 좋습니다.</p> + +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <img src="{@docRoot}design/media/confirm_ack_confirming.png"> + <p><strong>확인하기</strong>란, 사용자에게 방금 호출한 작업을 정말로 진행할 것인지 묻는 것입니다. 경우에 따라 확인은 고려해야 할 작업과 관련된 경고 또는 중요한 정보와 함께 표시됩니다.</p> + </div> + <div class="layout-content-col span-6"> + <img src="{@docRoot}design/media/confirm_ack_acknowledge.png"> + <p><strong>승인하기</strong>란, 사용자에게 방금 호출한 작업이 완료되었음을 알리는 텍스트를 표시하는 것입니다. 이는 시스템이 수행하는 암시적인 작업에 대한 불확실성을 제거해 줍니다. 경우에 따라 승인은 작업의 실행을 취소하는 옵션과 함께 표시됩니다.</p> + </div> +</div> + +<p>이런 방식의 사용자와의 소통은 이미 일어난 일이나 일어날 일에 대한 불확실성을 완화시키는 데 도움이 될 수 있습니다. 또한, 확인하기 또는 승인하기는 사용자가 후회할지도 모르는 실수를 미연에 방지합니다.</p> + +<h2>사용자 작업을 확인 또는 승인하기 적절한 경우</h2> +<p>모든 작업에 확인 또는 승인이 적합한 것은 아닙니다. 다음 순서도를 참고하여 디자인을 결정하는 데 도움을 받으세요.</p> +<img src="{@docRoot}design/media/confirm_ack_flowchart.png"> + +<h2>확인하기</h2> +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <h4>예: Google Play 도서</h4> + <img src="{@docRoot}design/media/confirm_ack_ex_books.png"> + <p>이 예에서는 사용자가 Google Play 라이브러리에서 도서 삭제를 요청했습니다. 이 작업을 확인하기 위해 <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">경고</a>가 나타납니다. 왜냐하면 해당 도서를 더 이상 어떠한 기기에서도 이용할 수 없다는 것을 알려야 하기 때문입니다.</p> + <p>확인 대화 상자를 작성할 때, 요청된 작업을 반향하여 제목을 의미 있게 만듭니다.</p> + </div> + <div class="layout-content-col span-7"> + <h4>예: Android Beam</h4> + <img src="{@docRoot}design/media/confirm_ack_ex_beam.png"> + <p>확인을 두 개의 버튼을 포함한 경고로 표시할 필요는 없습니다. Android Beam을 시작하면 사용자에게 공유할 콘텐츠를 터치하라는 메시지가 표시됩니다(이 예의 경우 사진). 진행하지 않기로 결정한 경우에는 휴대폰에서 벗어나면 됩니다.</p> + </div> +</div> + +<h2>승인하기</h2> +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <h4>예: 방치된 Gmail 초안 저장</h4> + <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png"> + <p>이 예에서는 사용자가 Gmail의 메일 작성 화면에서 뒤로 또는 위로 탐색을 수행하면 예상치 못한 일이 일어나는데, 그건 바로 현재 초안이 자동으로 저장되는 것입니다. 승인은 알림 메시지 형식으로 나타납니다. 그리고 몇 초 후 사라집니다.</p> + <p>이때, 저장이 사용자가 아닌 앱에 의해 이뤄졌기 때문에 실행 취소는 적합하지 않습니다. 그리고 초안 목록으로 이동하면 쉽고 빠르게 메일 작성을 재개할 수 있습니다.</p> + + </div> + <div class="layout-content-col span-6"> + <h4>예: Gmail 대화 삭제</h4> + <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png"> + <p>사용자가 Gmail 목록에서 대화를 삭제하면, 승인이 실행 취소 옵션과 함께 표시됩니다. 승인은 사용자가 목록을 스크롤하는 등의 관련 없는 작업을 수행하기 전까지 그대로 남아 있습니다.</p> + </div> +</div> + +<h2>확인 또는 승인이 필요 없는 경우</h2> +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <h4>예: +1 누르기</h4> + <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png"> + <p><strong>확인이 필요 없습니다</strong>. 사용자가 실수로 +1을 누른 경우, 별문제가 되지 않습니다. 버튼을 다시 터치하여 해당 작업의 실행을 취소하면 됩니다.</p> + <p><strong>승인이 필요 없습니다</strong>. 사용자는 +1 버튼이 바운스되고 빨간색으로 바뀌는 것을 볼 수 있습니다. 이는 매우 분명한 신호입니다.</p> + </div> + <div class="layout-content-col span-7"> + <h4>예: 홈 화면에서 앱 제거하기</h4> + <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png"> + <p><strong>확인이 필요 없습니다</strong>. 이는 의도적인 작업으로, 사용자는 상대적으로 크고 고립된 대상으로 항목을 끌어다 놓을 것입니다. 따라서 실수가 발생할 가능성이 매우 낮습니다. 하지만 사용자가 이 결정을 후회하는 경우, 다시 복구하는 데는 몇 초면 됩니다.</p> + <p><strong>승인이 필요 없습니다</strong>. 사용자는 앱이 홈 화면에서 사라진 것을 알게 되는데, 이는 앱을 외부로 끌어서 화면에서 사라지게 했기 때문입니다.</p> + + </div> +</div> diff --git a/docs/html-intl/intl/ko/design/patterns/navigation.jd b/docs/html-intl/intl/ko/design/patterns/navigation.jd new file mode 100644 index 0000000..8e5c30b --- /dev/null +++ b/docs/html-intl/intl/ko/design/patterns/navigation.jd @@ -0,0 +1,213 @@ +page.title=뒤로 및 위로 탐색 기능이 포함된 탐색 +page.tags="navigation","activity","task","up navigation","back navigation" +page.image=/design/media/navigation_between_siblings_gmail.png +@jd:body + +<a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html"> + <div> + <h3>개발자 문서</h3> + <p>효과적인 탐색 구현하기</p> + </div> +</a> + +<p itemprop="description">일관적인 탐색 기능은 전반적인 사용자 환경에 필수적인 요소입니다. 일관성 없고 예상대로 진행되지 않는 기본 탐색은 +사용자에게 많은 실망을 줍니다. Android 3.0에서는 +글로벌 탐색 동작에 중요한 변경 사항을 도입했습니다. 뒤로 및 위로 탐색에 대한 +가이드라인을 꼼꼼히 따르면 사용자가 예상 가능하고 신뢰할 수 있는 탐색 기능이 탑재된 앱을 만들 수 있습니다.</p> +<p>Android 2.3 이하 버전에서는 +앱 내 탐색 기능을 지원하기 위해 시스템의 <em>뒤로</em> 버튼에 의존했습니다. Android 3.0에서는 작업 모음을 도입함으로써 앱 아이콘 및 왼쪽 방향 캐럿으로 이루어진 2차 탐색 메커니즘인 +<em>위로</em> 버튼이 추가되었습니다.</p> + +<img src="{@docRoot}design/media/navigation_with_back_and_up.png"> + +<h2 id="up-vs-back">위로 및 뒤로 비교</h2> + +<p>위로 버튼은 화면 +간의 계층적 관계를 기반으로 앱 내에서 탐색할 때 사용됩니다. 예를 들어, 화면 A에 표시된 항목 목록에서 항목을 선택하면 항목에 대한 세부 정보를 표시하는 화면 B로 이동하게 되는데, 이때 +화면 B는 화면 A로 +돌아가는 위로 버튼을 제공해야 합니다.</p> +<p>화면이 앱의 최상단에 있는 경우(즉, 앱의 홈인 경우), 위로 +버튼이 표시되지 않아야 합니다.</p> + +<p>시스템의 뒤로 버튼은 사용자가 최근에 작업한 화면 +기록을 역순으로 탐색할 때 사용됩니다. 일반적으로 이 버튼은 앱의 계층 구조가 아닌 화면 +간의 일시적인 관계를 기반으로 합니다.</p> + +<p>또한, 앞서 본 화면이 현재 화면의 계층적 상위 화면일 경우 +뒤로 버튼을 누르는 것과 위로 버튼을 누르는 것의 결과가 동일하며, 이는 흔하게 +발생하는 동작입니다. 하지만 사용자가 앱 내에 머무는 위로 버튼과 달리, 뒤로 +버튼을 누르면 홈 화면 또는 다른 앱으로 돌아갈 수 있습니다.</p> + +<img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png"> + +<p>뒤로 버튼은 화면 간 탐색과 직접적으로 관련 없는 몇 가지 동작도 지원합니다. +</p> +<ul> +<li>부동 창 해제(대화 상자, 팝업)</li> +<li>상황에 맞는 작업 모음 해제 및 선택한 항목에서 강조 표시 제거</li> +<li>화상 키보드(IME) 감추기</li> +</ul> +<h2 id="within-app">앱 내 탐색</h2> + +<h4>진입 지점이 여러 개인 화면으로 이동하기</h4> +<p>일부 화면은 앱의 계층 구조 내에서 엄격한 위치를 가지고 있지 않는 경우가 있으며, 이 경우 여러 진입 지점을 +통해서 접근할 수 있습니다. 예를 들어 설정 화면은 앱 +내의 다른 어떤 화면에서도 접근이 가능합니다. 이러한 경우, 위로 버튼을 누르면 뒤로 버튼과 +동일하게 참조하는 화면으로 돌아가게 됩니다.</p> +<h4>화면 내에서 뷰 변경하기</h4> +<p>화면의 뷰 옵션 변경은 위로 또는 뒤로 버튼의 동작을 변경하지 않습니다. 이는 화면이 앱 계층 구조 내에서 여전히 동일한 위치에 +있고, 어떠한 탐색 기록도 새로 생성되지 않기 때문입니다.</p> +<p>이러한 뷰 변경의 예는 다음과 같습니다.</p> +<ul> +<li>탭 및/또는 좌우 스와이프를 사용하여 뷰 전환하기</li> +<li>드롭다운(겹쳐진 탭이라고도 함)을 사용하여 뷰 전환하기</li> +<li>목록 필터링하기</li> +<li>목록 정렬하기</li> +<li>표시 문자 변경하기(예: 확대/축소)</li> +</ul> +<h4>형제 화면 간 탐색하기</h4> +<p>항목 목록에서 개별 항목의 상세 뷰로의 이동을 앱에서 지원하는 경우, 해당 항목에서 목록의 이전/이후 +항목으로 직접 이동할 수 있도록 지원하는 것이 바람직한 +경우도 있습니다. 예를 들어 Gmail의 대화에서 왼쪽 또는 오른쪽으로 간단하게 스와이프하여 동일한 받은 편지함에 있는 신규 또는 이전 메일을 +볼 수 있습니다. 화면 내에서 뷰를 변경하는 것과 마찬가지로, +탐색은 위로 또는 뒤로 버튼의 동작을 바꾸지 않습니다.</p> + +<img src="{@docRoot}design/media/navigation_between_siblings_gmail.png"> + +<p>하지만 참조 목록으로 같이 +묶여 있지 않은 연관된 상세 뷰 사이를 탐색할 때는 주목할 만한 예외적인 상황이 발생합니다. 예를 들어, Play Store에서 +동일한 개발자가 만든 여러 앱 또는 동일한 아티스트의 여러 앨범을 탐색하는 경우가 그렇습니다. 이러한 경우, 링크를 따라갈 때마다 +기록이 생성되므로, 뒤로 버튼을 누르면 이전에 본 화면으로 이동합니다. 위로 버튼을 누르면 계속해서 이러한 연관된 화면을 +거치지 않고 가장 최근에 본 컨테이너 화면으로 이동합니다.</p> + +<img src="{@docRoot}design/media/navigation_between_siblings_market1.png"> + +<p>상세 +뷰에 대한 지식을 바탕으로 더욱 스마트한 위로 버튼 동작을 구현할 수 있습니다. 위에서 설명한 Play Store 예를 확장하여 사용자가 +마지막으로 본 도서에서 해당 도서를 각색한 영화의 세부 정보 화면으로 이동했다고 가정해 봅니다. 그러한 경우, 위로 버튼을 누르면 사용자가 이전에 탐색한 적이 없는 +컨테이너(영화)로 이동할 수 있습니다.</p> + +<img src="{@docRoot}design/media/navigation_between_siblings_market2.png"> + +<h2 id="into-your-app">홈 화면 위젯 및 알림을 통한 앱 탐색</h2> + +<p>홈 화면 위젯이나 알림을 사용하여 사용자가 앱 계층 구조 내에 +있는 화면으로 바로 이동할 수 있게 할 수 있습니다. 예를 들어, Gmail의 받은 편지함 위젯과 새 메시지 알림은 +모두 받은 편지함 화면을 건너뛰고 사용자가 해당 메일로 바로 이동할 수 있게 해줍니다.</p> + +<p>이러한 두 경우 모두 위로 버튼을 다음과 같이 처리합니다.</p> + +<ul> +<li><em>일반적으로 목적지 화면이 +앱 내의 특정 화면에서 출발한 경우</em>, 위로 버튼은 해당 화면으로 이동해야 합니다.</li> +<li><em>그 외의 경우</em>, 위로 버튼은 앱의 최상위("홈") 화면으로 이동해야 합니다.</li> +</ul> + +<p>뒤로 버튼의 경우, +앱의 최상위 화면으로 이동하는 완전한 상위 탐색 경로를 태스크의 백 스택에 삽입하여 탐색을 더욱 예측 가능하게 만들어야 합니다. 이는 앱에 어떻게 진입했는지 잊어버린 +사용자가 앱에서 나가기 +전에 앱의 최상위 화면으로 이동할 수 있게 해줍니다.</p> + +<p>예를 들어 Gmail의 홈 화면 위젯은 메일 작성 +화면으로 바로 진입할 수 있는 버튼을 제공합니다. 메일 작성 화면에서 위로 또는 +뒤로 버튼을 누르면 받은 편지함으로 이동하게 되고, 받은 편지함에서 뒤로 버튼을 누르면 홈으로 돌아가게 됩니다.</p> + +<img src="{@docRoot}design/media/navigation_from_outside_back.png"> + +<h4>간접 알림</h4> + +<p>앱이 동시에 다양한 이벤트 정보를 제공해야 하는 경우, 사용자를 틈새 화면(interstitial screen)으로 이동하게 하는 +단일 알림을 사용할 수 있습니다. 이 화면은 +이러한 이벤트를 요약하고, 사용자가 앱을 세부적으로 탐색할 수 있는 경로를 제공합니다. 이러한 스타일의 알림을 <em>간접 알림</em>이라고 +합니다.</p> + +<p>기본(직접) 알림과 달리, 간접 알림의 +틈새 화면에서 뒤로 버튼을 누르면 백 스택에 다른 화면이 +추가되지 않고 알림이 트리거된 지점으로 사용자를 이동시킵니다. 사용자가 +틈새 화면에서 앱으로 들어가면, 위로 버튼 및 뒤로 버튼은 위에서 설명한 바와 같이 틈새 화면으로 돌아가지 않고, 기본 알림과 마찬가지로 앱 내에서 +탐색을 수행합니다.</p> + +<p>예를 들어 Gmail을 사용 중인 사용자가 캘린더로부터 간접 알림을 받았다고 가정해 봅니다. 해당 +알림을 터치하면 틈새 화면이 열립니다. 이 화면에는 다른 +여러 이벤트에 대한 알림도 표시됩니다. 틈새 화면에서 뒤로 버튼을 터치하면 Gmail로 돌아갑니다. 특정 +이벤트를 터치하면 사용자를 틈새 화면에서 나오게 하여 +해당 이벤트의 세부 정보를 보여주는 완전한 캘린더 앱으로 이동하게 됩니다. 이벤트 세부 정보 화면에서 위로 버튼과 뒤로 버튼을 누르면 캘린더의 최상위 뷰로 이동하게 됩니다.</p> + +<img src="{@docRoot}design/media/navigation_indirect_notification.png"> + +<h4>팝업 알림</h4> + +<p><em>팝업 알림</em>은 알림 창을 거치지 않고 바로 사용자에게 +표시되는 알림입니다. <strong>팝업 알림은 시기적절한 +응답이 요구되는 경우와 사용자의 컨텍스트를 중단하는 것이 필요한 경우에 한하여</strong> 드물게 사용됩니다. 예를 들어 +Talk는 친구가 화상 채팅에 참여하도록 보낸 +초대를 사용자에게 알리기 위해 이러한 스타일의 알림을 사용하며, 이 초대는 몇 초 후에 자동으로 만료됩니다.</p> + +<p>탐색 동작 측면에서, 팝업 알림은 간접 +알림의 틈새 화면 동작을 상당히 많이 따릅니다. 뒤로 버튼을 누르면 팝업 알림이 해제됩니다. 사용자가 팝업을 +통해 앱으로 이동하면, 위로 및 뒤로 버튼은 기본 알림의 규칙에 따라 앱 내에서 +탐색합니다.</p> + +<img src="{@docRoot}design/media/navigation_popup_notification.png"> + +<h2 id="between-apps">앱 간 탐색</h2> + +<p>Android 시스템의 기본이 되는 강점 중 하나는 앱이 +다른 앱을 실행할 수 있다는 점이며, 이로 인해 사용자는 한 앱에서 다른 앱으로 직접 이동할 수 있습니다. 예를 들어, 사진을 캡처해야 하는 +앱은 카메라 앱을 작동시킬 수 있으며, 카메라 앱은 사진을 해당 앱으로 +돌려줍니다. 이러한 기능은 개발자와 사용자 모두에게 매우 유용합니다. 왜냐하면 개발자는 쉽게 다른 앱의 +코드를 활용할 수 있고, 사용자는 흔히 수행하는 +작업을 일관된 환경으로 즐길 수 있기 때문입니다.</p> + +<p>앱 간 탐색을 이해하려면 아래에서 +설명하는 Android 프레임워크 동작을 알아야 합니다.</p> + +<h4>액티비티, 태스크 및 인텐트</h4> + +<p>Android에서 <strong>액티비티</strong>는 +정보 및 사용자가 수행할 수 있는 모든 관련 작업이 포함된 화면을 정의하는 애플리케이션 구성 요소입니다. 앱은 본인이 직접 생성하는 +액티비티와 다른 앱에서 재활용하는 액티비티로 구성되어 있는 액티비티 컬렉션입니다.</p> + +<p><strong>태스크</strong>는 사용자가 목적을 달성하기 위해서 따르는 일련의 액티비티입니다. 단일 +태스크는 단 한 가지 앱의 액티비티만 사용할 수도 있고, +여러 앱의 액티비티를 사용할 수도 있습니다.</p> + +<p><strong>인텐트</strong>는 어떤 앱이 작업을 수행하는 데 다른 +앱의 도움을 받고자 한다는 신호를 보내는 메커니즘입니다. 앱의 액티비티는 +어떠한 인텐트에 응답을 보낼 수 있는지 알려줄 수 있습니다. "공유하기"와 같이 일반적인 인텐트의 경우, 사용자는 해당 요청을 수행할 수 있는 여러 앱을 +설치했을 수도 있습니다.</p> + +<h4>예: "공유하기"를 지원하는 앱 간에 탐색하기</h4> + +<p>액티비티, 태스크, 인텐트가 어떻게 같이 동작하는지 이해하려면 한 앱이 다른 앱을 사용하여 콘텐츠 +공유를 어떻게 가능하게 하는지 생각해 보세요. 예를 들어, 홈에서 Play Store 앱을 실행하면 +새로운 태스크 A가 시작됩니다(아래 그림 참조). Play Store에서 탐색하다가 홍보 도서의 세부 정보를 +보기 위해 터치하면, 다른 액티비티를 추가하여 태스크를 연장하는 방식으로 사용자는 동일한 태스크에 머물게 됩니다. 공유하기 +작업을 트리거하면 공유하기 인텐트를 처리하도록 +등록된 액티비티(다양한 앱에서 제공)가 나열된 목록을 보여주는 대화 상자가 표시됩니다.</p> + +<img src="{@docRoot}design/media/navigation_between_apps_inward.png"> + +<p>사용자가 Gmail을 통해 공유하기를 선택할 경우, 새로운 태스크가 생성되는 것이 아니라 +태스크 A의 연장으로 Gmail의 메일 작성 액티비티가 추가됩니다. Gmail의 백그라운드에서 실행되는 자체적인 태스크가 있을 경우, 해당 태스크는 아무런 +영향도 받지 않습니다.</p> + +<p>메일 작성 액티비티에서 메시지를 보내거나 뒤로 버튼을 터치하면, 사용자는 +도서 세부 정보 액티비티로 돌아가게 됩니다. 뒤로 버튼을 연이어 터치하면 Play +Store에서 탐색한 페이지로 되돌아가게 되어 결국에는 홈 화면에 이르게 됩니다.</p> + +<img src="{@docRoot}design/media/navigation_between_apps_back.png"> + +<p>하지만 사용자가 메일 작성 액티비티에서 위로 버튼을 터치하는 것은 +Gmail에 남아 있고자 하는 의지를 보이는 것입니다. 따라서, 이 경우 Gmail의 대화 목록 액티비티가 표시되고, 새로운 태스크 B가 생성됩니다. 새로운 태스크는 +항상 홈에 기반을 두고 있기 때문에, 대화 목록에서 뒤로 버튼을 터치하면 홈으로 되돌아가게 됩니다.</p> + +<img src="{@docRoot}design/media/navigation_between_apps_up.png"> + +<p>태스크 A는 백그라운드에 남아 있기 때문에 나중에 돌아올 수 있습니다(예를 들어, +최근 앱 화면을 통해). Gmail에 이미 백그라운드에서 실행 중인 자체적인 태스크가 있을 경우, +해당 태스크는 태스크 B로 대체됩니다. 이전 컨텍스트는 사용자의 새로운 목적에 따라 제거됩니다.</p> + +<p>앱 계층 구조 내의 액티비티에서 인텐트를 처리하도록 앱에서 등록하는 경우, 위로 탐색을 지정하는 방법에 대한 지침을 확인하려면 +<a href="#into-your-app">홈 화면 위젯 및 +알림을 통한 앱 탐색</a>을 참조하세요.</p> diff --git a/docs/html-intl/intl/ko/design/patterns/notifications.jd b/docs/html-intl/intl/ko/design/patterns/notifications.jd new file mode 100644 index 0000000..aab5eac --- /dev/null +++ b/docs/html-intl/intl/ko/design/patterns/notifications.jd @@ -0,0 +1,872 @@ +page.title=알림 +page.tags="notifications","design","L" +@jd:body + + <a class="notice-developers" href="{@docRoot}training/notify-user/index.html"> + <div> + <h3>개발자 문서</h3> + <p>사용자에게 알리기</p> + </div> +</a> + +<a class="notice-designers" href="notifications_k.html"> + <div> + <h3>Android 4.4 이하 버전의 알림</h3> + </div> +</a> + +<!-- video box --> +<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY"> +<div> + <h3>비디오</h3> + <p>DevBytes: Android L Developer Preview의 알림</p> +</div> +</a> + +<style> + .col-5, .col-6, .col-7 { + margin-left:0px; + } +</style> + +<p>알림 시스템을 사용하면 친구로부터 받은 새 채팅 메시지나 캘린더 이벤트와 같이 앱에서 관련된 +시기 적절한 +이벤트에 대한 알림을 사용자에게 표시할 수 있습니다. +알림을 중요한 +이벤트가 +발생한 경우 사용자에게 이에 대해 알리는 뉴스 채널이나 사용자가 앱에 집중하고 +있지 않은 동안에 이벤트를 시간순으로 기록하는 로그라고 생각하세요. 또한, 적절한 경우 모든 Android 기기에 걸쳐 동기화될 수도 있습니다.</p> + +<h4 id="New"><strong>Android 5.0의 새로운 기능</strong></h4> + +<p>Android 5.0에서는 구조적, +시각적, 그리고 기능적으로 중요한 업데이트를 알림을 통해 받을 수 있습니다.</p> + +<ul> + <li>새로운 +머티어리얼 디자인 테마와 일치하도록 알림이 시각적으로 바뀌었습니다.</li> + <li> 알림이 이제 기기 잠금 화면에 표시되나, +민감한 콘텐츠는 여전히 +숨길 수 있습니다.</li> + <li>기기가 사용 중일 때 수신되는 최우선 순위의 알림은 이제 +헤드업 알림이라는 새로운 형식을 사용합니다.</li> + <li>클라우드와 동기화되는 알림: Android +기기 중 하나에서 알림을 해지하면 +다른 기기에서도 해지됩니다.</li> +</ul> + +<p class="note"><strong>참고:</strong> 이 +Android 버전의 알림 디자인은 이전 버전과 많이 +다릅니다. 이전 +버전의 알림 디자인에 대한 자세한 내용은 <a href="./notifications_k.html">Android 4.4 이하 버전의 알림</a>을 참조하세요.</p> + +<h2 id="Anatomy">알림의 해부학적 구조</h2> + +<p>이 섹션에서는 알림의 기본적인 부분과 다양한 유형의 기기에서 알림이 어떻게 +표시될 수 있는지에 대해 살펴봅니다.</p> + +<h3 id="BaseLayout">기본 레이아웃</h3> + +<p>모든 알림은 기본적으로 다음을 포함하는 기본 레이아웃으로 구성됩니다.</p> + +<ul> + <li> 알림 <strong>아이콘</strong>. 알림 아이콘은 +알림을 발생시킨 앱을 나타냅니다. 또한, +앱이 두 가지 이상의 +유형을 생성하는 경우 알림 유형을 나타낼 수도 있습니다.</li> + <li> 알림 <strong>제목</strong> 및 추가 +<strong>텍스트</strong>.</li> + <li> <strong>타임스탬프</strong>.</li> +</ul> + +<p>이전 플랫폼 버전의 +{@link android.app.Notification.Builder Notification.Builder}로 생성된 알림은 시스템이 대신 +처리하는 사소한 스타일 변화를 제외하면 Android +5.0에서 똑같이 표시되고 동작합니다. 이전 +Android 버전의 알림에 대한 자세한 내용은 +<a href="./notifications_k.html">Android 4.4 이하 버전의 알림</a>을 참조하세요.</p></p> + + + <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" /> + + +<div style="clear:both;margin-top:20px"> + <p class="img-caption"> + 핸드헬드 알림(왼쪽) 및 Wear에서 표시되는 동일한 알림(오른쪽)의 기본 레이아웃 +- 사용자 사진 및 알림 아이콘 포함 + </p> + </div> + +<h3 id="ExpandedLayouts">확장 레이아웃</h3> + + +<p>앱 알림이 얼마나 자세한 정보를 +제공하도록 할지는 직접 선택할 수 있습니다. 메시지의 처음 +몇 줄을 보여주거나 더 큰 이미지 미리보기를 보여줄 수 있습니다. 이러한 추가 +정보는 사용자에게 더 많은 +컨텍스트를 제공하며, 경우에 따라 이를 통해 사용자는 메시지 +전체를 읽을 수도 있습니다. 사용자는 +핀치-줌(pinch-zoom) 또는 한 손가락으로 밀기를 이용하여 축소 레이아웃과 +확장 레이아웃 간을 전환할 수 있습니다. + Android는 단일 이벤트 알림에 대해 세 개의 확장 레이아웃 +템플릿(텍스트, 받은 편지함, +이미지)을 애플리케이션에 사용할 수 있도록 제공합니다. 다음 이미지는 +단일 이벤트 알림이 +핸드헬드(왼쪽) 및 웨어러블(오른쪽)에서 어떻게 표시되는지 보여줍니다.</p> + +<img style="margin-top:30px" +src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png" + alt="" width="700px" height;="284px" /> +<img style="margin-top:30px" +src="{@docRoot}images/android-5.0/notifications/stack_combo.png" + alt="" width="700px" height;="284px" /> +<img style="margin-top:30px" +src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png" + alt="" width="311px" height;="450px" /> + +<h3 id="actions" style="clear:both; margin-top:40px">작업</h3> + +<p>Android는 알림의 +맨 아래 부분에 표시되는 선택적인 작업을 지원합니다. +이러한 작업을 통해 사용자는 알림을 발생시킨 +애플리케이션을 열 필요 없이 알림 창에서 특정 +알림에 대한 가장 일반적인 태스크를 처리할 수 있습니다. +이 기능은 밀어서 해제하기와 함께 작용하여 상호 작용의 속도를 향상시키며, 사용자가 자신에게 중요한 알림에 +집중하는 데 도움이 됩니다.</p> + + + <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" /> + + + +<p style="clear:both">알림에 +포함할 작업의 수는 신중하게 결정해야 합니다. 더 많은 +작업을 포함할수록 인지적 복합성이 가중됩니다. 당장에 중요하며 의미 +있는 작업만 포함하여 작업 +수를 최소한으로 +제한해야 합니다.</p> + +<p>알림에 포함하기에 적합한 작업은 다음과 같습니다.</p> + +<ul> + <li> 표시하려는 +콘텐츠 유형과 관련하여 필수적이고, 자주 사용되며 전형적인 작업 + <li> 사용자가 신속하게 태스크를 완료할 수 있게 하는 작업 +</ul> + +<p>다음과 같은 작업은 피합니다.</p> + +<ul> + <li> 애매모호한 작업 + <li> "읽기" 또는 +"열기"와 같이 알림의 기본 작업과 동일한 작업 +</ul> + + + +<p>작업 +아이콘 및 이름으로 각각 구성된, 최대 세 개의 작업을 지정할 수 있습니다. + 단순한 기본 레이아웃에 작업을 추가하면 알림이 확장 가능하게 되며, +알림에 +확장 레이아웃이 없는 경우에도 이러한 사항이 적용됩니다. 작업은 +확장된 +알림에서만 표시되고 그 외에는 숨겨져 있으므로 +사용자가 알림에서 +호출할 수 있는 모든 작업을 관련 애플리케이션 내에서도 +사용할 수 있는지 확인해야 합니다.</p> + +<h2 style="clear:left">헤드업 알림</h2> +<div class="figure" style="width:311px"> + <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" /> + <p class="img-caption"> + 몰입형 앱의 +최상위에 +표시되는 헤드업 알림의 예(걸려오는 전화, 최우선 순위) + </p> +</div> + +<p>최우선 순위의 알림을 수신하면(오른쪽), 가능한 작업을 보여주는 확장된 레이아웃 형태로 +잠시 동안 사용자에게 +표시됩니다.</p> +<p> 그런 다음, 알림이 알림 +창으로 돌아갑니다. 알림에 대한 <a href="#correctly_set_and_manage_notification_priority">우선 순위</a> 플래그가 HIGH, MAX 또는 전체 화면으로 +지정된 경우 헤드업 알림이 표시됩니다.</p> + +<p><b>헤드업 알림의 좋은 예</b></p> + +<ul> + <li> 기기 사용 시 걸려오는 전화</li> + <li> 기기 사용 시 알람</li> + <li> 새 SMS 메시지</li> + <li> 배터리 부족</li> +</ul> + +<h2 style="clear:both" id="guidelines">가이드라인</h2> + + +<h3 id="MakeItPersonal">개인에 맞게 만들기</h3> + +<p>다른 사람이 보낸 항목(메시지 또는 +상태 업데이트)에 대한 알림의 경우 +{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}을 사용하여 그 사람의 이미지를 포함합니다. 또한 +그 사람에 대한 정보를 알림의 메타데이터에 추가합니다({@link android.app.Notification#EXTRA_PEOPLE} 참조).</p> + +<p>알림의 기본 아이콘이 여전히 표시됩니다. 따라서 사용자는 +해당 아이콘을 상태 표시줄에 +보이는 아이콘과 관련시킬 수 있습니다.</p> + + +<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" /> +<p style="margin-top:10px" class="img-caption"> + 누가 트리거했는지와 보낸 내용을 보여주는 알림입니다. +</p> + + +<h3 id="navigate_to_the_right_place">적합한 곳으로 이동하기</h3> + +<p>사용자가 작업 +버튼 외부에서 알림을 터치하면, 사용자가 알림에서 +참조되는 데이터를 확인하고 처리할 수 있는 곳에서 +앱이 열리도록 합니다. 대부분의 경우, 메시지와 같은 단일 데이터 항목을 표시하는 상세 뷰가 이에 해당합니다. +하지만 알림이 중첩되어 있을 경우에는 +요약 뷰일 수도 있습니다. 앱이 +최상위 레벨 아래의 위치에서 열린 경우 +사용자가 시스템의 뒤로 버튼을 눌러 최상위 레벨로 돌아갈 수 있도록 앱의 백 스택에 탐색 경로를 삽입합니다. 자세한 내용은 +<a href="{@docRoot}design/patterns/navigation.html#into-your-app">탐색</a> +디자인 패턴의 <em>홈 화면 위젯 및 알림을 통한 앱 탐색</em>을 참조하세요.</p> + +<h3 id="correctly_set_and_manage_notification_priority">알림의 +우선 순위를 정확하게 설정하고 +관리하기</h3> + +<p>Android는 알림 우선 순위 플래그를 지원합니다. 이 플래그를 통해 다른 알림에 상대적으로 알림이 표시되는 위치가 +결정되도록 할 수 있습니다. 또한 +사용자가 가장 중요한 알림을 항상 가장 먼저 볼 수 있게 +할 수 있습니다. 알림을 게시할 때 +다음 우선 순위 중에서 +선택할 수 있습니다.</p> +<table> + <tr> + <td class="tab0"> +<p><strong>우선 순위</strong></p> +</td> + <td class="tab0"> +<p><strong>용도</strong></p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>MAX</code></p> +</td> + <td class="tab1"> +<p>시간에 민감한 +또는 +특정 태스크를 계속 진행하기 전에 처리해야 할 +상황을 사용자에게 알리는 중요하고 긴급한 알림에 사용합니다.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>HIGH</code></p> +</td> + <td class="tab1"> +<p>중요한 대화에 주로 사용합니다. 일례로 사용자에게 특별히 흥미로운 내용이 포함된 메시지 또는 채팅 +이벤트가 이에 해당합니다. +최우선 순위의 알림은 헤드업 알림이 표시되도록 합니다.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>DEFAULT</code></p> +</td> + <td class="tab1"> +<p>여기서 설명하지 않은 기타 모든 우선 순위의 알림에 사용합니다.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>LOW</code></p> +</td> + <td class="tab1"> +<p>사용자에게 알려야 하지만 긴급하지 않은 +알림에 사용합니다. 우선 순위가 낮은 알림은 보통 목록의 맨 아래에 표시되며, +공개 또는 대상이 불특정한 소셜 업데이트에 사용하기 +좋습니다. 사용자가 +요구한 +알림이지만, 이러한 알림은 긴급하거나 직접적인 +대화를 우선할 수 없습니다.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>MIN</code></p> +</td> + <td class="tab1"> +<p>날씨 정보 또는 상황에 맞는 +위치 정보와 같은 상황별 또는 배경 정보에 사용합니다. +최소 우선 순위 알림은 상태 표시줄에 표시되지 않습니다. 이러한 알림은 사용자가 알림 창을 확대하면 +볼 수 있습니다.</p> +</td> + </tr> +</table> + + +<h4 id="how_to_choose_an_appropriate_priority"><strong> +적절한 +우선 순위를 선택하는 방법</strong></h4> + +<p><code>DEFAULT</code>, <code>HIGH</code> 및 <code>MAX</code>는 작업을 중단시키는 우선 순위이며, 사용자의 액티비티를 +중단시키는 +위험 요소입니다. 앱 사용자를 성가시게 하지 않으려면 다음과 같은 +알림에만 작업을 중단시키는 우선 순위를 지정해야 합니다.</p> + +<ul> + <li> 다른 사람이 관련된 알림</li> + <li> 시간에 민감한 알림</li> + <li> 실제 환경에서의 사용자 행동을 즉시 바꿀 수 있는 알림</li> +</ul> + +<p><code>LOW</code> 및 <code>MIN</code>으로 설정된 알림도 사용자에게 +중요할 수 있습니다. 대부분은 아니지만 많은 알림이 사용자의 +즉각적인 주의를 필요로 하지 않거나 사용자의 손목에 진동을 줄 필요가 없지만, 사용자가 알림을 확인하고자 +했을 때 유용하다고 +여길 정보를 포함합니다. <code>LOW</code> 및 <code>MIN</code> +우선 순위 알림에 대한 조건은 다음과 같습니다.</p> + +<ul> + <li> 다른 사람이 관련되지 않음</li> + <li> 시간에 민감하지 않음</li> + <li> 사용자가 흥미를 가질 만하지만 시간이 있을 때 +보기를 원할 수 있는 내용을 포함함</li> +</ul> + + + <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" /> + + +<h3 style="clear:both" id="set_a_notification_category">알림 +범주 설정하기</h3> + +<p>알림이 미리 정의된 범주에 포함될 경우(아래 +참조), +그에 따라 할당합니다. 알림 창(또는 +다른 알림 +수신자)과 같은 시스템 UI의 기능은 순위 및 필터링 결정을 내리는 데 이 정보를 활용할 수 있습니다.</p> +<table> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p> +</td> + <td> +<p>수신 전화(음성 또는 화상) 또는 이와 유사한 동기적 대화 +요청</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p> +</td> + <td> +<p>수신되는 직접 메시지(SMS, 인스턴트 메시지 등)</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p> +</td> + <td> +<p>비동기적 대량 메시지(이메일)</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p> +</td> + <td> +<p>캘린더 이벤트</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p> +</td> + <td> +<p>홍보 또는 광고</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p> +</td> + <td> +<p>알람 또는 타이머</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p> +</td> + <td> +<p>장기간 실행 중인 백그라운드 작업의 진행 상황</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p> +</td> + <td> +<p>소셜 네트워크 또는 공유 업데이트</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p> +</td> + <td> +<p>백그라운드 작업 또는 인증 상태 오류</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p> +</td> + <td> +<p>재생에 대한 미디어 전송 제어</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p> +</td> + <td> +<p>시스템 또는 기기 상태 업데이트. 시스템용으로 예약됨</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p> +</td> + <td> +<p>실행 중인 백그라운드 서비스에 대한 표시</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p> +</td> + <td> +<p>한 가지 특정 항목에 대한 구체적이고 시기적절한 권장 사항. 예를 들어, 뉴스 +앱이 사용자가 다음으로 읽기 원할 것이라고 생각하는 뉴스를 +권하고자 하는 경우</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p> +</td> + <td> +<p>기기 또는 상황별 상태에 대한 지속적인 정보</p> +</td> + </tr> +</table> + +<h3 id="summarize_your_notifications">알림 요약하기</h3> + +<p>특정 유형의 알림이 이미 보류 중일 때 앱에서 같은 유형의 새 +알림을 보내려고 하는 경우, 이 앱에 대해 두 알림을 하나의 요약 알림으로 결합합니다. 새로운 개체는 +생성하지 않아야 합니다.</p> + +<p>요약 알림은 사용자가 특정 종류의 알림이 +몇 개나 보류 중인지 +파악할 수 있도록 간단한 개요를 표시합니다.</p> + +<div class="col-6"> + +<p><strong>잘못된 사용</strong></p> + <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" /> +</div> + +<div> +<p><strong>올바른 사용</strong></p> + + <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" /> +</div> + +<p style="clear:left; padding-top:30px; padding-bottom:20px">확장된 다이제스트 레이아웃을 사용하여 +요약에 포함된 각각의 알림에 대한 +더 자세한 정보를 제공할 수 있습니다. 이 방식을 통해 사용자는 +어떠한 알림이 보류 중이고, +관련된 앱에서 +상세 정보를 읽고 싶을 정도로 알림이 흥미로운지를 +판단할 수 있습니다.</p> +<div class="col-6"> + <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" /> + <p class="img-caption"> + 확장된 알림 및 축소된 요약 알림(<code>InboxStyle</code> 사용) + </p> +</div> + +<h3 style="clear:both" id="make_notifications_optional">알림을 +선택 항목으로 만들기</h3> + +<p>사용자는 항상 알림을 통제할 수 있어야 합니다. 애플리케이션 설정에 알림 설정 항목을 추가하여 +사용자가 앱의 +알림을 +해제하거나 경고 속성(예: 경고음 및 진동 사용 +여부)을 변경할 수 있도록 허용합니다.</p> + +<h3 id="use_distinct_icons">뚜렷한 아이콘 사용</h3> +<p>알림 영역을 봄으로써 사용자는 현재 +어떠한 종류의 +알림이 보류 중인지 파악할 수 있어야 합니다.</p> + +<div class="figure"> + <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" /> +</div> + + <div><p><strong>올바른 사용</strong></p> + <p>Android 앱이 이미 제공하는 알림 아이콘을 살펴본 후 본인의 앱에서 +뚜렷히 나타날 수 있는 +알림 아이콘을 만듭니다.</p> + + <p><strong>올바른 사용</strong></p> + <p>작은 아이콘에 +적절한 <a href="/design/style/iconography.html#notification">알림 아이콘 스타일</a>을 사용하며, 작업 +아이콘에는 머티어리얼 라이트 +<a href="/design/style/iconography.html#action-bar">작업 모음 아이콘 +스타일</a>을 사용합니다.</p> +<p ><strong>올바른 사용</strong></p> +<p >아이콘은 시각적으로 단순하게 유지하고, +알아차리기 힘들 정도로 과도하게 세부적인 디자인은 피합니다.</p> + + <div><p><strong>잘못된 사용</strong></p> + <p>작은 +아이콘 및 작업 +아이콘에 알파(어둡게 설정 또는 페이드 효과)를 추가합니다. 아이콘의 가장자리를 안티-앨리어싱할 수는 있지만, Android가 이러한 +아이콘을 마스크(즉, +알파 채널만 사용됨)로 사용하기 때문에 일반적으로 이미지는 최대 수준의 +불투명도로 그려집니다.</p> + +</div> +<p style="clear:both"><strong>잘못된 사용</strong></p> + +<p>다른 앱과의 차별화를 위해 색상을 사용합니다. 알림 아이콘은 투명한 배경 이미지에 흰색 아이콘이어야만 +합니다.</p> + + +<h3 id="pulse_the_notification_led_appropriately">알림 LED를 +적절하게 사용하기</h3> + +<p>많은 Android 기기에는 알림 LED가 내장되어 있으며, 이러한 알림 LED는 화면이 꺼져 있을 때 +사용자에게 +이벤트에 대해 알리기 위해 사용됩니다. 우선 순위가 <code>MAX</code>, +<code>HIGH</code> 또는 <code>DEFAULT</code>인 알림의 경우 +LED가 켜지며, 낮은 우선 순위(<code>LOW</code> 및 +<code>MIN</code>)의 알림의 경우 LED가 켜지지 않습니다.</p> + +<p>알림과 관련하여 사용자는 LED도 제어할 수 있어야 합니다. +DEFAULT_LIGHTS를 사용하는 경우 +LED는 흰색으로 켜집니다. 사용자가 +명시적으로 지정한 경우 외에는 다른 알림 +색상을 사용할 수 없습니다.</p> + +<h2 id="building_notifications_that_users_care_about">사용자가 관심을 가질 만한 +알림 만들기</h2> + +<p>사용자의 사랑을 받는 앱을 만들기 위해서는 +알림을 신중하게 디자인해야 합니다. +알림은 앱의 목소리를 대변하며, 앱의 +개성에 큰 영향을 미칩니다. 원하지 않거나 +중요하지 않은 알림은 사용자를 성가시게 하거나 앱에서 +많은 신경을 +쓰게 하는 것에 대해 짜증이 나게 합니다. 따라서 알림을 사용할 때는 현명하게 판단해야 합니다.</p> + +<h3 id="when_to_display_a_notification">알림을 표시해야 하는 경우</h3> + +<p>사람들이 즐겨 사용하는 애플리케이션을 만들려면 사용자의 +주의와 집중을 흐트러뜨리지 않고 보호해야 하는 리소스임을 +인지하는 것이 중요합니다. Android의 +알림 시스템은 알림이 사용자의 주의를 최대한 방해하지 않도록 +디자인되었습니다. +하지만 +알림이 +사용자의 태스크 흐름을 방해한다는 사실을 계속해서 인지해야 합니다. +알림을 계획할 때 알림이 사용자의 작업을 중단할 만큼 +중요한지 곰곰히 생각해 보시기 바랍니다. 잘 모르겠는 경우, 사용자가 앱의 알림 설정을 사용하여 알림에 대한 수신 동의를 +선택할 수 있도록 허용하거나 알림 우선 순위 플래그를 <code>LOW</code> 또는 <code>MIN</code>으로 +조정하여 사용자 작업을 +방해하지 +않도록 합니다.</p> + + <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" /> + <p style="margin-top:10px" class="img-caption"> + 시간에 민감한 알림의 예 + </p> + +<p>일반적으로 잘 만들어진 앱은 사용자의 요청이 있을 때에만 정보를 알리고 +요청하지 않은 알림은 꼭 필요한 경우에만 표시하도록 합니다.</p> + +<p>알림은 <strong>시간에 민감한 이벤트</strong>에 주로 사용하며, 특히 +이러한 동기적 이벤트에 <strong>다른 사람이 관련된 경우</strong>에 사용합니다. 예를 +들어 수신되는 채팅 메시지는 +실시간으로 진행되는 동기적 대화 형식이며, 이때 다른 사람은 +적극적으로 응답을 기다립니다. 캘린더 이벤트는 언제 +알림을 사용하고 +사용자의 주의를 끌어야 하는지에 대해 알 수 있는 또 다른 좋은 예입니다. 왜냐하면 이는 임박한 이벤트이며, 캘린더 이벤트에는 종종 다른 사람이 +관련되기 때문입니다.</p> + +<h3 style="clear:both" id="when_not_to_display_a_notification">알림을 +표시하지 않아야 하는 경우</h3> + +<div class="figure" style="margin-top:60px"> + <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" /> +</div> + +<p>다른 대부분의 경우 알림은 적합하지 않습니다.</p> + +<ul> + <li> 사용자와 +직접 관련이 없는 정보나 시간에 민감하지 않은 +정보는 알리지 않도록 합니다. 예를 들어 소셜 네트워크를 통한 비동기적이며 +대상이 불특정한 업데이트는 +일반적으로 실시간으로 +사용자를 방해할 수 없습니다. 그러한 업데이트를 원하는 사용자의 +경우에는 사전에 수신 동의를 설정할 수 있게 하면 됩니다.</li> + <li> 관련된 새 정보가 현재 +화면에 표시된 경우에는 알림을 생성하지 않아야 합니다. 대신 애플리케이션 UI를 +사용하여 컨텍스트 내에 새로운 정보가 있음을 사용자에게 +직접 알립니다. + 예를 들어 채팅 애플리케이션은 +사용자가 다른 사용자와 대화 중일 때는 시스템 알림을 생성하지 않아야 합니다.</li> + <li> 정보 저장 +또는 동기화, 애플리케이션 업데이트와 같은 낮은 수준의 기술 정보의 경우 사용자가 개입하지 +않아도 앱이나 시스템에서 스스로 알아서 처리할 수 있다면 사용자를 방해하지 않도록 합니다.</li> + <li> 사용자가 아무런 조치를 +취하지 않아도 애플리케이션 스스로 오류를 복구할 +수 있는 경우, 이러한 오류에 대해 사용자에게 알리지 않도록 합니다.</li> + <li> 알리는 내용은 없고 +단순히 앱을 +홍보하는 알림은 만들지 않습니다. 알림은 유용하고, 시기적절하며 새로운 정보를 제공해야 하며, 단지 앱 출시를 위한 용도로는 +사용하지 +않습니다.</li> + <li> 단지 +사용자에게 브랜드를 알리기 위한 불필요한 알림은 만들지 않도록 합니다. + 그러한 알림은 사용자를 짜증 나게 만들어 앱에 대한 관심을 멀어지게 합니다. 소량의 +업데이트된 정보를 제공하면서 사용자가 지속적으로 +앱에 관심을 +갖게 만드는 최고의 +방법은 +홈 화면에 추가할 수 있는 위젯을 개발하는 것입니다.</li> +</ul> + +<h2 style="clear:left" id="interacting_with_notifications">알림과 +상호 작용하기</h2> + +<p>알림은 상태 표시줄에 아이콘으로 표시되며, +알림 창을 열어서 +확인할 수 있습니다.</p> + +<p>알림을 터치하면 관련 앱이 열리고 알림에 +해당되는 세부 내용이 표시됩니다. 알림을 왼쪽이나 오른쪽으로 +스와이프하면 알림 창에서 제거됩니다.</p> + +<h3 id="ongoing_notifications">지속적인 알림</h3> +<div class="figure" style="width:311px"> + <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" /> + <p class="img-caption"> + 음악 재생으로 인한 지속적인 알림 + </p> +</div> +<p>지속적인 알림은 +백그라운드에서 진행 중인 프로세스에 대해 사용자에게 알립니다. +예를 들어 음악 플레이어는 사용자가 재생을 멈출 때까지 +알림 시스템 내에 현재 재생 중인 트랙을 +계속 표시합니다. 또한 지속적인 알림은 파일을 다운로드하거나 비디오를 인코딩하는 등의 장기 태스크에 대한 +피드백을 사용자에게 +표시할 수도 있습니다. 지속적인 알림은 사용자가 알림 창에서 직접 +제거할 수 없습니다.</p> + +<h3 id="ongoing_notifications">미디어 재생</h3> +<p>Android 5.0에서는 잠금 화면에 사용이 중단된 +{@link android.media.RemoteControlClient} 클래스에 대한 전송 제어가 표시되지 않습니다. 하지만 알림은 <em>표시되며</em>, 각 +앱의 재생 알림이 현재 사용자가 잠금 상태에서 재생을 제어하는 기본 +방법입니다. 이 동작은 화면의 잠금 여부와 상관없이 사용자에게 +일관된 환경을 제공하면서, 어떠한 버튼을 +어떻게 표시할지에 대해 앱이 더 세부적으로 제어할 수 있도록 +지원합니다.</p> + +<h3 style="clear:both" +id="dialogs_and_toasts_are_for_feedback_not_notification">대화 상자 +및 알림 메시지</h3> + +<p>현재 +화면에 표시되어 있는 경우가 아니라면 앱은 대화 상자나 알림 메시지를 생성해서는 안 됩니다. 대화 상자나 알림 메시지는 +앱 내에서 +사용자가 어떠한 행동을 취했을 때 이에 대한 즉각적인 응답으로만 표시되어야 합니다. +대화 상자 및 알림 메시지 사용에 대한 자세한 지침은 +<a href="/design/patterns/confirming-acknowledging.html">확인 및 승인하기</a>를 참조하세요.</p> + +<h3>순위 및 순서</h3> + +<p>알림은 뉴스이므로, 기본적으로 발생한 순서의 역순으로 +표시되며, 특히 +앱에서 명시된 알림 +<a href="#correctly_set_and_manage_notification_priority">우선 순위</a>에 따라 순서가 결정됩니다.</p> + +<p>알림은 잠금 화면에서 중요한 부분이며, 기기의 화면이 켜질 +때마다 +표시됩니다. 잠금 화면의 공간은 협소하기 때문에 가장 긴급하고 관련 있는 알림을 식별하는 것이 +가장 +중요합니다. 이러한 +이유 때문에 Android에는 다음을 고려한 +더욱 정교한 정렬 알고리즘이 있습니다.</p> + +<ul> + <li> 타임스탬프 및 애플리케이션에 명시된 우선 순위.</li> + <li> 알림이 최근에 소리 또는 +진동으로 사용자를 방해했는지에 대한 여부. (즉, +휴대폰에서 방금 소리가 났을 때 사용자가 "방금 무슨 +일이 있었지?"에 대해 알고 싶어하는 경우 잠금 화면을 +보면 한 눈에 알 수 있어야 합니다.)</li> + <li> {@link android.app.Notification#EXTRA_PEOPLE}을 사용하여 알림에 첨부된 사람, +그리고 특히 즐겨찾기에 추가된 연락처인지에 대한 여부.</li> +</ul> + +<p>이러한 정렬 알고리즘을 잘 이용하기 위해서는 목록의 특정 부분에 초점을 두기 보다는 생성하고자 +하는 사용자 +환경에 초점을 둡니다.</p> + + <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" /> + + <p class="img-caption" style="margin-top:10px">Gmail 알림은 +기본 우선 순위이기 때문에 +보통은 행아웃과 같은 인스턴트 메시징 앱에서 온 메시지보다 하위에 정렬됩니다. 하지만 +새 메시지가 들어오면 +일시적으로 순위가 올라갑니다. + </p> + + +<h3>잠금 화면</h3> + +<p>알림은 잠금 화면에 표시되기 때문에 사용자의 개인 정보 보호가 +특히 +중요하게 고려해야 할 사항입니다. 알림은 종종 민감한 정보를 포함하기 때문에, 아무나 +기기의 화면을 켰을 때 볼 수 있게 할 필요는 +없습니다.</p> + +<ul> + <li> 보안 잠금 화면(PIN, 패턴 또는 암호)이 있는 기기의 인터페이스에는 +공개 및 비공개 부분이 있습니다. 공개 인터페이스는 보안 잠금 화면에 표시될 수 있기 때문에 +누구나 볼 수 있습니다. 비공개 인터페이스는 잠금 화면 뒤에 있기 때문에 +기기의 잠금 화면을 푼 사람만 볼 수 있습니다.</li> +</ul> + +<h3>보안 잠금 화면에 표시된 정보에 대한 사용자 제어</h3> +<div class="figure" style="width:311px"> + <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" /> + <p class="img-caption"> + 사용자가 기기의 잠금을 푼 후 보이는 콘텐츠와 함께 잠금 화면에 표시된 알림 + </p> +</div> + +<p>보안 잠금 화면을 설정할 때 사용자는 +민감한 세부 정보를 보안 잠금 화면에서 숨기도록 선택할 수 있습니다. 이러한 경우 시스템 UI는 알림의 <em>정보 공개 수준</em>을 +고려하여 +안전하게 표시할 수 있는 정보를 파악합니다.</p> +<p> 정보 공개 수준을 제어하려면 +<code><a +href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>를 호출한 후 +다음 값 중 하나를 지정합니다.</p> + +<ul> + <li><code><a +href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>. 알림의 전체 내용을 +표시합니다. + 정보 공개 수준을 지정하지 않을 경우 시스템 기본값입니다.</li> + <li><code><a +href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>. +잠금 화면에 알림의 +아이콘과 알림을 게시한 앱의 이름을 포함하여 해당 알림의 존재에 대한 기본 정보를 표시합니다. 알림의 나머지 세부 사항은 표시되지 않습니다. +다음과 같은 몇 가지 유용한 사항을 염두해야 합니다. + <ul> + <li> 시스템이 보안 잠금 화면에 다른 공개 버전의 알림을 +표시하도록 제공하려는 경우, <code><a +href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code> +필드에 대체 +알림 개체를 제공해야 합니다. + <li> 이렇게 설정하면 앱에서 여전히 유용하지만 개인 정보를 노출하지 않는 편집된 버전의 +내용을 생성할 수 있습니다. 예를 들어, 알림에 SMS 텍스트, 발신자 이름 및 연락처 아이콘을 포함하는 +SMS 앱이 있다고 가정합니다. +이 알림은 <code>VISIBILITY_PRIVATE</code>여야 하지만, <code>publicVersion</code>은 다른 식별 +정보 없이 "3개의 새 메시지"와 같이 여전히 유용한 정보를 +포함할 수 있습니다. + </ul> + </li> + <li><code><a +href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>. 최소한의 정보만 표시하며, 알림의 아이콘마저 +표시하지 않습니다.</li> +</ul> +<h2 style="clear:both" id="notifications_on_android_wear">Android Wear에 +표시되는 알림</h2> + +<p>Android Wear에 표시되는 알림과 해당 <em>작업</em>은 기본적으로 Wear 기기에 연결되어 있습니다. +개발자는 어떠한 알림을 +휴대폰에서 워치로, +그리고 그 반대로 연결할지 제어할 수 있습니다. 또한 개발자는 어떠한 작업을 연결할지도 제어할 수 있습니다. 앱이 +단일 탭으로 실행할 수 없는 +작업을 포함하는 경우, 이러한 작업을 +Wear +알림에 표시되지 않도록 숨기거나 Wear 앱에 연결하여 사용자가 +워치에서 작업을 +끝낼 수 있도록 합니다.</p> + +<h4>알림과 작업 연결하기</h4> + +<p>휴대폰과 같이 연결된 기기는 알림을 Wear 기기에 연결하여 해당 기기에서 +알림이 표시될 수 있게 합니다. 마찬가지로 작업도 연결할 수 있기 때문에 사용자는 Wear 기기에서 +알림을 바로 처리할 수 있습니다.</p> + +<p><strong>연결해야 할 사항</strong></p> + +<ul> + <li> 새 인스턴트 메시지</li> + <li> +1, Like, Heart와 같은 단일 탭 작업</li> +</ul> + +<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" /> + +<p><strong>연결하지 않아야 할 사항</strong></p> + +<ul> + <li> 새로 도착한 팟캐스트의 알림</li> + <li> 워치에서 수행할 수 없는 기능에 매핑되는 작업</li> +</ul> + + + +<p><h4>Wear에 대해서만 정의할 수 있는 고유한 작업</h4></p> + +<p>Wear에서만 수행할 수 있는 작업이 몇 가지 있으며, 이러한 작업은 다음과 같습니다.</p> + +<ul> + <li> "금방 올게"와 같은 미리 준비된 대답으로 구성된 빠른 목록</li> + <li> 휴대폰에서 열기</li> + <li> 음성 입력 화면을 불러오는 "댓글 달기" 또는 "응답" 작업</li> + <li> Wear에 특화된 앱을 실행하는 작업</li> +</ul> + +<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" /> |