User Interaction

Panther·2021년 9월 10일
0

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/3d-touch/

3D Touch

지원되는 기기에서 사람들은 터치스크린에 압력의 수준을 다르게 적용해서 추가적인 기능에 접근할 수 있습니다. 앱은 아이템 및 아이템에 영향을 미치기 위해 사용할 수 있는 액션을 보여주고자 컨텍스트 메뉴(혹은 픽 앤 팝을 지원하면서)를 표시해서 응답할 수 있습니다.

iOS 13 및 이후 버전에서 동작하는 기기에서 사람들은 기기가 3D 터치를 지원하는지와 상관없이 컨텍스트 메뉴를 열기 위한 터치 및 누르기 제스쳐를 사용할 수 있습니다. 3D 터치 기기에서 제스쳐는 컨텍스트 메뉴를 더 빠르게 드러낼 수 있습니다.

Home Screen Interaction

iOS 13 혹은 이후 버전에서 작동하는 기기의 홈스크린에서 앱은 사람들이 앱 아이콘을 터치하거나 누르고 있을 때 컨텍스트 메뉴를 표시할 수 있습니다(3D 터치 기기의 경우 사람들은 메뉴를 보기 위해 아이콘에 짧은 누르기를 합니다). 앱의 컨텍스트 메뉴는 사람들이 빠르게 앱의 특정 작업을 수행할 수 있게 하고, 관심 정보를 볼 수 있도록 해줍니다. 예를 들어 달력은 스케줄에서 다음 이벤트를 보여주는 것과 더불어 이벤트 생성을 위한 단축경로를 제공합니다. 디자인 가이드는 Home Screen Actions와 Widgets를 보시기 바랍니다.

Home Screen Actions
https://developer.apple.com/design/human-interface-guidelines/ios/system-capabilities/home-screen-actions/

Widgets
https://developer.apple.com/design/human-interface-guidelines/widgets/overview/introduction/

Live Photos

라이브 포토는 사람들이 라이브 포토에 상호작용할 때 살아나며, 사진이 찍히기 전후의 순간을 보여주기 위해 움직임과 소리를 사용합니다. iOS 13 혹은 이후 버전에서 작동하는 기기에서 사람들은 사진에 손가락을 대서 라이브 포토를 활성화합니다. 3D 터치 기기에서 사람들은 라이브 포토를 짧게 누릅니다. 가이드는 Live Photos를 보시기 바랍니다.

Live Photos
https://developer.apple.com/design/human-interface-guidelines/live-photos/overview/


https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/apple-pencil-and-scribble/

Apple Pencil and Scribble

애플 펜슬은 메모, 스케칭, 페인팅, 문서 마크 등 여러 가지 상황에서 픽셀 수준의 정확도를 제공하는 다재다능하고 직관적인 도구입니다. iPadOS 14 및 이후 버전에서 스크리블은 사람들이 사람들이 빠르고 개인적인 온디바이스 쓰기 인식을 통해 모든 텍스트 필드로 텍스트를 입력할 수 있도록 해줍니다. 가이드는 Supporting Scribble을 보시기 바랍니다.

Supporting Scribble은 이 글의 아래에 나옵니다.

기대되는 행동을 지원하시기 바랍니다. 애플 펜슬은 드로잉, 쓰기, 마킹을 쉽고 자연스럽게 만들 수 있도록 디자인되었으며, 포인터 혹은 UI 상호작용 툴로써 사용될 수도 있습니다. 애플 펜슬 동작을 사람들이 기대하는 동작으로 활성화하는 것과 더불어 기대되지 않는 상호작용 지원 역시 고려해야 합니다. 예를 들어 앱을 사람들이 문서의 마진에 노트를 할 수 있도록 만들 수 있습니다.

사람들이 애플 펜슬과 손가락 입력을 바꾸는 것을 선택할 수 있도록 해야 합니다.(강제하지는 말아야 합니다.) 예를 들어 사람들은 컨트롤에 상호작용할 때 애플 펜슬로부터 손가락으로 바꿀 필요가 없습니다. 앱이 애플 펜슬로 마킹하는 것을 지원하는 경우 앱의 컨트롤은 애플 펜슬에도 응답해야 합니다. 응답하지 못하는 컨트롤은 혼란을 초래하며, 오작동 혹은 배터리가 낮은 것 같은 인상을 줍니다. 유사하게 사람들이 드로잉 및 마크에 있어 손가락도 사용할 수 있도록 해야 합니다. (스크리블은 애플 펜슬 입력만 지원합니다.)

사람들이 애플 펜슬로 스크린을 터치하는 순간을 마크할 수 있도록 해줘야 합니다. 스크린에 애플 펜슬을 놓는 경험은 종이에 연필을 놓는 것과 같은 경험의 미러링이어야 합니다. 애플 펜슬 사용 전 사람들에게 버튼 탭을 요구하거나 특정 모드에 진입하는 것을 요구하지 않아야 합니다.

애플 펜슬을 사용하는 방식에 반응해서 표현할 수 있도록 도와야 합니다. 애플 펜슬은 틸트(고도), 힘(압력), 방향(방위각)을 감지할 수 있습니다. 앱은 애플 펜슬이 만드는 스트로크에 영향을 미치기 위해 이 정보를 사용해야 합니다. 예를 들어 굵기 및 강도를 다양화하는 것이 대표적입니다. 압력에 응답할 때 간단함과 직관적임을 유지해야 합니다. 예를 들어 압력을 다양화해서 연속적인 속성(잉크 불투명도 혹은 브러시 크기와 같은)에 영향을 미치는 것이 자연스럽게 느껴집니다.

AltitudePressureAzimuth

컨텐트에 직접적인 연결을 나타내는 시각적 피드백을 사용하시기 바랍니다. 애플 펜슬은 스크린을 터치할 때 직접적이고 즉각적으로 컨텐트를 조작하기 위해 나타나야 합니다. 연결이 끊긴 것처럼 보이는 액션을 시작하거나 스크린의 다른 부분에 있는 컨텐트에 영향을 주지 않아야 합니다.

왼손잡이, 오른손잡이에 훌륭한 경험을 디자인해야 합니다. 어느 방향의 한 손으로 가릴 수 있는 위치에 컨트롤을 배치하지 않아야 합니다. 컨트롤이 가려질 가능성이 있다면 사람들이 다른 위치로 놓을 수 있도록 하는 것을 고려하시기 바랍니다.

가능하면 더블탭 제스쳐에 있어 사용자의 설정을 존중해주시기 바랍니다. 애플 펜슬2는 펜슬이 어떻게 그리는지를 변경하는 것을 통해 더블탭 제스쳐에 응답합니다. 직접적으로(툴을 바꿈으로써) 혹은 간접적으로(색상 옵션을 제시함으로써) 응답할 수 있습니다. 더블탭이 기본값으로 현재 툴과 지우개 사이를 토글할지라도 사람들은 설정에 들어갈 수 있고 더블탭이 현재 및 이전 툴 사이를 토글할 수 있도록 해야 하며, 색상 피커를 보여주고 숨길 수 있도록 해야하고, 아무것도 하지 않도록 할 수도 있게 해야 합니다. 앱이 이와 같은 돚악을 지원하지 않으면 더블탭에 있어 시스템 전반의 설정을 존중하고, 사람들이 같은 동작에 대해 새로운 제스쳐를 배우도록 기대하지 않아야 합니다. 시스템전반 더블탭 설정이 앱에서 합리적이지 않다면, 애플 펜슬2의 모드를 변경시켜 제스쳐를 사용할 수 있습니다. 예를 들어 메시 편집 툴을 갖는 3D 앱 사용자는 툴의 raise, lower 모드를 토글하기 위해 더블탭을 사용할 수 있습니다.

사람들이 필요한 경우에 따라 커스텀 더블탭 동작을 활성화 할 수 있는 방법을 제공하시기 바랍니다. 앱이 애플 펜슬2 동작의 몇 가지 혹은 모두를 지원하면서도 커스텀 더블탭 동작을 지원하려면, 사람들이 커스텀 동작을 활성화할 수 있도록 해주는 컨트롤을 제공하시기 바랍니다. 사용자가 커스텀 동작을 활성화시킬 명시적인 방법을 갖지 못하면, 사람들은 앱이 시스템 전반 더블탭 설정에 응답하지 않을 때 혼란을 겪을 것입니다. 이와 같은 시나리오에서 사람들이 앱이 지원할 수 있는 대안 동작을 쉽게 발견할 수 있도록 해줘야 하면서, 기본값으로 활성화시키지는 않아야 합니다.

컨텐트를 수정하는 액션 수행을 위한 더블탭 제스쳐를 사용하지 않아야 합니다. 사람들이 우연히 더블탭을 하게 될 수도 있습니다. 이는 앱이 액션을 수행한 것을 인식하지 못했음을 의미합니다. 더블탭이 툴 모드 사이를 토글할 때, 사용자가 다시 더블탭해서 우연히 발생했던 더블탭 모드 변경을 되돌릴 수 있습니다. 그러나 액션을 수행하기 위한 제스쳐를 사용하는 앱에서 사람들은 취소할 방법을 찾고자 작업흐름을 중단해야 합니다. 더 나쁜 경우는 잠재적으로 파괴적인 액션을 수행하기 위해 더블탭을 사용하는 앱입니다(만약 사용자가 액션 발생을 인식하지 못하면 데이터를 잃을 수 있습니다).

개발자 가이드는 Pencil Interactions를 보시기 바랍니다.

Pencil Interactions
https://developer.apple.com/documentation/uikit/pencil_interactions
https://velog.io/@panther222128/Pencil-Interactions

Supporting Scribble

스크리블 및 애플 펜슬을 사용해서 사람들은 앱에서 텍스트를 수용할 수 있는 모든 곳에 쓸 수 있습니다(사람들은 탭을 하거나 모드를 바꿀 필요가 없습니다). 스크리블은 iPadOS 14 및 이후 버전에서 완전히 통합되지 않기 때문에 스크리블은 키보드처럼 기본값으로 모든 앱에서 사용 가능합니다. 아래 가이드는 기본값 스크리블 지원을 강화시켜주고, 앱에서 훌륭한 쓰기 경험을 제공할 수 있도록 합니다.

텍스트를 부드럽고 쉽게 입력할 수 있도록 해야 합니다. 기본값으로 스크리블은 모든 표준 텍스트 컨트롤(텍스트 필드, 텍스트 뷰, 검색 필드, 웹 컨텐트에서 편집 가능한 필드와 같은)에서 작동하며, 암호 필드는 제외합니다. 앱에서 커스텀 텍스트 필드를 사용하는 경우 사람들이 쓰기를 시작할 수 있기 전에 해당 텍스트 필드를 탭하거나 선택하지 않도록 해야 합니다.

사람들이 텍스트를 입력하길 원하는 모든 곳에서 스크리블을 사용할 수 있도록 하시기 바랍니다. 키보드 사용과 다르게 애플 펜슬 사용은 사람들이 종이 시트를 다루는 방법으로 스크린을 다룰 수 있도록 해줍니다. 텍스트 진입이 자연스러운 것처럼 보이는 곳에 스크리블을 일관적으로 사용할 수 있도록 만들어줌으로써 이와 같은 지각을 강화시켜야 합니다. 예를 들어 리마인더에서 마지막 아이템 아래에 있는 빈 공간에서 쓸 수 있도록 해 새로운 리마인더를 생성할 수 있도록 하는 것이 자연스럽습니다. 이는 영역이 텍스트 필드를 포함하지 않아도 그렇습니다. 개발자 가이드는 UIIndirectScribbleInteraction을 보시기 바랍니다.

UIIndirectScribbleInteraction
https://developer.apple.com/documentation/uikit/uiindirectscribbleinteraction
https://velog.io/@panther222128/UIIndirectScribbleInteraction

사람들이 글을 쓰는 동안 주의를 산만하게 만들지 않아야 합니다. 몇 가지 텍스트 필드 동작은 키보드 입력에서 잘 작동하지만, 애플 펜슬이 활성화 하는 자연스러운 쓰기 경험을 방해할 수 있습니다. 예를 들어 사람들이 텍스트에 입력할 때 자동완성을 표시하는 것을 피하는 것이 최선입니다. 왜냐하면 제안이 시각적으로 쓰기를 방해할 수 있기 때문입니다. 사람들이 쓰기 시작하는 순간에 필드의 플레이스홀더 텍스트를 숨기는 것도 좋은 아이디어입니다. 이는 사람들의 입력이 겹쳐서 나타나지 않도록 하기 위함입니다.

사람들이 텍스트 필드에 입력을 하는 동안 텍스트 필드가 고정되어 있도록 하고 컨텐츠를 스크롤하지 않도록 해야 합니다. 몇 가지 경우에 텍스트 필드가 초점이 맞춰졌을 때 텍스트 필드를 이동시키는 것이 합리적입니다. 예를 들어 검색 필드는 결과를 표시할 수 있는 많은 공간을 만들기 위해 이동될 수 있습니다. 이와 같은 움직임은 사람들이 키보드를 사용할 때 합리적이지만, 사람들이 쓰고있을 때 입력이 어느 곳으로 가는지 제어를 잃은 것처럼 느낄 수 있습니다. 텍스트 필드가 움직이는 것을 방지할 수 없다면, 사람들이 쓰기를 일시정지하기까지 움직임을 지연시키는 것을 고려하시기 바랍니다 (개발자 가이드는 scribbleInteractionShouldDelayFocus(_:)를 보시기 바랍니다).

사람들이 텍스트 필드에서 쓰기와 편집을 하는 동안 자동 스크롤을 방지하는 것도 중요합니다. 고쳐쓴 텍스트가 자동 스크롤될 때, 위에 쓰여지는 것을 피하길 시도할 것입니다. 더 나쁜 경우 텍스트가 사람들이 텍스트를 선택하기 위해 애플 펜슬을 사용하는 동안 스크롤되면, 사람들은 원하는 곳이 아닌 다른 영역을 선택하게 될 것입니다.

사람들이 쓸 수 있는 충분한 공간을 제공해야 합니다. 사람들이 키보드를 사용해서 텍스트를 입력할 때 작은 텍스트 필드도 괜찮지만 쓰기에 불편함을 느낄 수 있습니다. 애플 펜슬 입력이 가능하다는 것을 알고 있을 때 사람들이 텍스트 필드에 쓰려고 하거나 쓰기를 일시정지할 때 텍스트 필드의 크기를 증가시켜서 쓰기 경험을 향상시키기 바랍니다. 사람들이 쓰는 동안 텍스트 필드의 크기를 바꾸는 것을 피해야 합니다.

개발자 가이드는 UIScribbleInteraction을 보시기 바랍니다.

UIScribbleInteraction
https://developer.apple.com/documentation/uikit/uiscribbleinteraction
https://velog.io/@panther222128/UIScribbleInteraction

Providing a Custom Drawing Experience

PencilKit을 사용해서 사람들이 메모할 수 있도록 하고 문서 및 이미지에 주석을 달 수 있도록 할 수 있으며, iOS가 제공하는 것과 같은 low-latency 그리기를 수행할 수 있도록 합니다. PencilKit은 앱에 있는 캔버스에 커스텀 드로잉 생성을 쉽게 해주며, 도구 피커와 잉크 팔레트를 제공합니다. 개발자 가이드는 PencilKit을 보시기 바랍니다.

PencilKit
https://developer.apple.com/documentation/pencilkit
https://velog.io/@panther222128/PencilKit

사람들이 기존 컨텐트의 상단에 그릴 수 있도록 해야 합니다. 기본값으로 PencilKit 캔버스에 있는 색상은 동적으로 다크 모드를 조정함으로써 사람들이 모든 모드에서 컨텐트를 생성할 수 있도록 하고 결과 역시 모두에서 잘 나타나도록 합니다. 그러나 사람들이 PDF 혹은 사진과 같은 기존 컨텐트의 상단에 그리려고 할 때, 마크업이 날카롭고 시각적일 수 있도록 색상의 동적 조정을 방지하길 원할 수 있습니다.

앱이 compact 환경에서 작동할 때 툴 피커가 컨텐트를 가리지 않도록 해야 합니다. regular 환경에서 툴 피커는 컨텐트 위에 떠있어서 사람들이 이동시킬 수 있지만, compact 환경에서 툴 피커는 스크린의 하단에 고정되어 머무릅니다. 사람들의 컨텐트를 가리는 것을 피하려면 컨텐트 뷰의 프레임을 조정할 수 있고 혹은 툴 피커의 높이를 고려하기 위해 스크롤 뷰 인셋을 조정할 수 있습니다.

앱이 compact 환경에서 동작할 때 커스텀 실행 취소 및 다시 실행 버튼 제공을 고려하시기 바랍니다. regular 환경에서 툴 피커는 실행 취소 및 다시 실행 버튼을 포함하지만 compact 환경에서는 그렇지 않습니다. compact 환경에서 네비게이션 바에 커스텀 버튼을 표시할 수 있습니다. 표준 세 손가락 실행 취소/다시 실행 제스쳐를 지원하는 것도 고려할 수 있습니다. 이로써 사람들은 모든 환경에서 실행 취소 및 다시 실행을 사용할 수 있게 도비니다. 가이드는 Undo and Redo를 보시기 바랍니다.

Undo and Redo는 이 글의 아래에 있습니다.

이 부분에 environment 관련 이미지가 둘 있습니다. 링크에서 직접 보시기 바랍니다.


https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/audio/

Audio

아이폰과 아이패드는 내부 혹은 외부 스피커, 헤드폰, 블루투스 혹은 에어플레이가 활성화된 기기를 통해 오디오를 재생할 수 있습니다. 사람들은 볼륨 버튼, 링/무음 스위치, 헤드폰 컨트롤, 컨트롤 센터 볼륨 슬라이더, 써드파티 액세서리에 있는 사운드 컨트롤을 포함해 기기에서 소리를 조작하기 위한 몇 가지 타입의 컨트롤을 사용합니다. 소리가 앱 경험의 주요한 부분이거나 혹은 일부분일지라도 앱의 소리가 어떻게 동작해야 하는지 사람들의 기대를 충족시킬 필요가 있습니다.

Silence

사람들은 링톤과 메시지 톤과 같은 예상치 못한 소리에 의해 방해받고싶지 않을 때 기기를 무음으로 바꿀 수 있습니다. 이와 같은 시나리오에서 사람들은 키보드 클릭, 소리 효과, 게임 사운드트랙, 기타 오디오 피드백과 같은 불필요한 소리를 무음으로 만들기를 원할 수 있습니다. 기기가 무음 모드로 진입할 때 미디어 플레이백, 알람, 오디오/비디오 메시징처럼 사람들이 명시적으로 시작한 오디오만을 재생해야 합니다.

Volume

사람들은 볼륨을 조정하기 위해 사용하는 방법과 상관없이 볼륨 설정이 시스템에 있는 모든 소리(음악, 앱 내부 소리 효과를 포함해)에 영향을 미치길 기대할 수 있습니다. 설정에서 별도로 조정할 수 있는 벨소리 볼륨은 예외입니다.

Headphones

사람들은 헤드폰을 사용해서 비공개적으로 듣는 것을 유지할 수 있고, 손을 자유롭게 사용할 수 있습니다. 헤드폰을 꽂을 때 사용자는 인터럽션 없이 자동으로 소리가 다시 라우팅되는 것을 기대할 것이며, 헤드폰을 뺄 때 즉시 일시정지되길 기대할 것입니다.

Designing a Great Audio Experience

필요한 경우 자동으로 수준을 조정해야 합니다.(전체 볼륨은 조정하지 않아야 합니다.) 앱은 훌륭한 오디오 믹스를 달성하기 위해 상대적이고 독립적인 볼륨 수준을 조정할 수 있지만, 시스템 볼륨은 최종 출력을 제어해야 합니다.

가능한 경우 오디오를 다시 라우팅하는 것을 허용하시기 바랍니다. 사람들은 다른 오디오 출력 기기를 선택하길 원할 수 있습니다. 예를 들어 사람들은 집 스테레오, 차 라디오, 애플TV를 통해 음악을 듣길 원할 수 있습니다. 이와 같은 기능을 지원하지 않을 이유가 없는 한 가능하면 지원하시기 바랍니다.

사람들이 오디오를 조정할 수 있도록 시스템 제공 볼륨 뷰를 사용하시기 바랍니다. 볼륨 뷰는 오디오 출력을 다시 라우팅하기 위한 볼륨 레벨 슬라이더와 컨트롤을 포함합니다. 슬라이더의 모양을 커스터마이징할 수도 있습니다. 개발자 가이드는 MPVolumeView를 보시기 바랍니다.

MPVolumeView
https://developer.apple.com/documentation/mediaplayer/mpvolumeview
https://velog.io/@panther222128/MPVolumeView

짧은 소리 및 바이브레이션을 재생하기 위해 시스템의 소리 서비스를 사용하시기 바랍니다. 개발자 가이드는 Autio Services를 보시기 바랍니다.

앱이 사용하는 소리 방식에 맞는 오디오 카테고리를 선택하시기 바랍니다. 선택하는 오디오 카테고리에 따라 앱의 소리는 다른 오디오와 믹스될 수 있으며, 앱이 백그라운드에 있는 동안 재생될 수 있고, 사람들이 링/무음 스위치를 무음으로 설정할 때 멈출 수 있습니다. 앱이 사람들의 기대를 충족시킬 수 있도록 가능한 많은 카테고리를 선택하시기 바랍니다. 예를 들어 필요하지 않은 경우 사람들이 다른 앱에서 음악 감상을 멈추지 않도록 해야 합니다. 개발자 가이드는 AVAudioSession.Category를 보시기 바랍니다.

AVAudioSession.Category
https://developer.apple.com/documentation/avfaudio/avaudiosession/category
https://velog.io/@panther222128/AVAudioSession.Category

CategoryMeaningBehavior
Solo ambient소리는 필수가 아니지만 다른 오디오를 무음으로 합니다. 예를 들어 사운드트랙을 갖는 게임입니다.무음 스위치에 응답해야 합니다.
다른 소리에 혼합하지 않아야 합니다.
백그라운드에서 재생하지 않아야 합니다.
Ambient소리는 필수가 아니며, 다른 오디오를 무음으로 하지 않습니다. 예를 들어 사람들이 게임 사운드트랙 위치에서 게임을 플레이하는 동안 다른 앱으로부터 음악을 재상할 수 있게 해줍니다.무음 스위치에 응답해야 합니다.
다른 소리와 혼합될 수 있습니다.
백그라운드에서 재생하지 않아야 합니다.
Playback소리는 필수적이며 다른 오디오와 혼합될 수 있습니다. 예를 들어 사람들이 앱을 빠져나온 후 듣기를 원하는 외국어 오디오북 혹은 교육 앱입니다.무음 스위치에 응답하지 않아야 합니다.
다른 소리와 혼합될 수도 있고 그렇지 않을 수도 있습니다.
백그라운드에서 재생될 수 있습니다.
Record소리가 녹음됩니다. 예를 들어 오디오 레코딩 모드를 제공하는 노트 앱입니다. 이와 같은 성격의 앱은 사람들이 녹음된 메모를 재생할 수 있도록 하는 경우 재생을 위해 카테고리를 전환할 것입니다.무음 스위치에 응답하지 않아야 합니다.
다른 소리와 혼합되지 않아야 합니다.
백그라운드에서 재생될 수 있습니다.
Play and record소리는 녹음되고 재생될 수 있으며, 잠재적으로 동시에 가능합니다. 예를 들어 오디오 메시징 혹은 비디오 호출 앱입니다.무음 스위치에 응답하지 않아야 합니다.
다른 소리와 혼합될 수도 있고 그렇지 않을 수도 있습니다.
백그라운드에서 녹음 및 재생될 수 있습니다.

인터럽션이 끝날 때 오디오 재생을 자동으로 재개할지를 결정해야 합니다. 간혹 다른 앱으로부터의 오디오가 앱에서 재생하고 있는 오디오를 인터럽트할 수 있습니다. 인터럽션은 재개(전화 통화가 오는 것과 같은)될 수 있거나 그렇지 않을 수 있으며, 사람들이 새 음악 플레이리스트를 시작하는 것과 유사합니다. 인터럽션 타입을 사용하고, 재생을 자동으로 재개할지 결정하기 위해 앱의 타입을 사용하시기 바랍니다. 예를 들어 인터럽션이 발생했을 때 오디오를 재생하는 미디어 재생 앱은 인터럽션이 끝나는 경우 재생을 계속하기 전, 타입이 재개 가능한 것인지 확인해야 합니다. 반면에 게임과 같은 앱은 자동으로 재생을 재개하기 전에 인터럽션 타입을 확인할 필요가 없으며, 이는 명시적 사용자 선택 없이 게임은 오디오를 재생하기 때문입니다. 개발자 가이드는 shouldResume을 보시기 바랍니다.

shouldResume
https://developer.apple.com/documentation/avfaudio/avaudiosession/interruptionoptions/1616528-shouldresume
https://velog.io/@panther222128/shouldResume

VoIP앱이 오디오 세션 인터럽션에 정확하게 응답할 수 있도록 해야 합니다. 특히 사람들이 내장된 마이크를 사용하는 동안 아이패드의 스마트 폴리오를 닫을 때 전화를 종료하는 것이 중요합니다. 스마트 폴리오를 닫는 것은 자동으로 아이패드 마이크를 음소거하고, 기본값으로 이와 관련된 오디오 세션을 인터럽트합니다. 사람들이 스마트 폴리오를 다시 여는 경우 오디오 세션을 다시 시작하면, 사람들의 인식 없이 마이크를 재활성화해서 사람들의 개인정보를 침해할 리스크를 가질 수 있습니다. 바른 방법으로 응답하는 것을 확인할 수 있도록 오디오 세션 인터럽션을 조사할 수 있습니다. 개발자 가이드는 Responding to Audio Session Interruptions르 ㄹ보시기 바랍니다.

Responding to Audio Session Interruptions
https://developer.apple.com/documentation/avfaudio/avaudiosession/responding_to_audio_session_interruptions
https://velog.io/@panther222128/Responding-to-Audio-Session-Interruptions

앱이 임시 오디오 재생을 마무리할 때 다른 앱이 알 수 있도록 해야 합니다. 앱이 일시적으로 다른 앱의 오디오를 인터럽트할 수 있는 경우 다른 앱이 재개될 수 있을 때 이를 알 수 있도록 하는 방법으로 오디오 세션에 플래그를 지정해야 합니다. 개발자 가이드는 notifyOthersOnDeactivation을 보시기 바랍니다.

notifyOthersOnDeactivation
https://developer.apple.com/documentation/avfaudio/avaudiosession/setactiveoptions/1616603-notifyothersondeactivation
https://velog.io/@panther222128/notifyOthersOnDeactivation

합리적인 경우에만 오디오 컨트롤에 응답해야 합니다. 사람들은 앱이 포어그라운드에 있거나 백그라운드에 있는 것과 상관없이 앱 인터페이스 밖(컨트롤 센터 혹은 헤드폰에 있는 컨트롤과 같은)에서 오디오 재생을 제어할 수 있습니다. 오디오 관련 컨텍스트 혹은 연결된 블루투스나 에어플레이가 활성화된 기기에서 앱이 오디오를 재생하는 경우 오디오 컨트롤에 응답하는 것은 괜찮습니다. 그렇지 않으면 사람들이 컨트롤을 활성화할 때 앱은 현재 재생하고 있는 다른 앱의 오디오를 중단하지 않아야 합니다.

오디오 컨트롤의 용도를 바꾸지 않아야 합니다. 사람들은 오디오 컨트롤이 모든 앱에서 일관적으로 동작하는 것을 기대합니다. 그렇기 때문에 앱에서 오디오 컨트롤의 의미를 다시 정의하지 않아야 합니다. 앱이 특정 컨트롤을 지원하지 않는 경우 이들에 응답하지 않아야 합니다.


https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/authentication/

Authentication

경험을 개인화하는 것, 추가 기능 접근, 컨텐트 구매, 데이터 동기화 같은 값을 위해서 사용자에게 인증을 요청할 수 있습니다. 앱이 인증을 요구하는 경우 사람들에게 로그인을 위한 간단하고 보안을 보장하는 방법을 줄 수 있도록 'Sign in with Apple'을 사용할 수 있습니다. 'Sign in with Apple'을 지원하는 경우 사람들은 신뢰할 수 있는 일관적인 로그인 경험을 가질 수 있고, 여러 계정과 암호를 기억할 필요가 없는 간편함을 가질 수 있습니다.

'Sign in with Apple'을 사용하지 않는 경우 암호 자동완성을 사용하시기 바랍니다. 이 기능은 자동으로 암호 및 보안 코드를 생성하고 채우며, 사람들은 인증 스크린에서 적은 시간만을 소비할 수 있게 됩니다. 모든 앱은 이 기능을 지원해야 합니다. 개발자 가이드는 Supporting Password AutoFill을 보시기 바랍니다.

Supporting Password AutoFill
https://developer.apple.com/documentation/security/password_autofill/

가능한 로그인을 지연하시기 바랍니다. 사람들은 유용한 어떤 것을 하기 전에 로그인을 강요받는 경우 앱 사용을 포기합니다. 로그인 수행 전 사람들이 앱을 친근하게 느끼도록 하시기 바랍니다. 쇼핑 앱의 경우 사람들이 launch에서 즉시 상품을 탐색할 수 있도록 하고, 구매 준비가 되었을 때에만 로그인을 요구해야 합니다. 미디어 스트리밍 앱의 경우 사람들이 컨텐트를 탐색할 수 있도록 해주고, 컨텐트 재생을 위해 로그인하기 전에 앱이 제공해야 하는 것이 어떤 것인지를 볼 수 있도록 해주시기 바랍니다.

인증의 이점을 설명하고, 서비스에 가입하는 방법을 설명하시기 바랍니다. 앱이 인증을 요구하는 경우 간결하고 친근한 설명을 로그인 스크린에서 표시할 수 있으며, 인증에 대한 요청 이유 및 인증의 이점을 설명할 수 있습니다. 또한, 시작부터 모든 사람이 앱 사용에서 계정을 갖지는 않는다는 것을 기억하시기 바랍니다. 계정을 가져오는 방법 설명을 확실히 하거나 가입을 위한 간단한 앱 내부 방법을 제공하시기 바랍니다.

적합한 키보드를 보여줌으로써 데이터 입력을 최소화하시기 바랍니다. 예를 들어 이메일 주소를 요청하는 경우 도움이 될 수 있는 데이터 입력 단축키를 포함하고 있는 이메일 키보드 스크린을 보여주시기 바랍니다. 관련 가이드는 Keyboards를 보시기 바랍니다. 사용 가능한 키보드 타입의 전체 리스트를 보려면 UITextInputTraitsUIKeyboardType 상수를 보시기 바랍니다.

Keyboards는 이 시리즈의 Controls에 있습니다.

UIKeyboardType
https://developer.apple.com/documentation/uikit/uikeyboardtype

패스코드라는 용어를 사용하지 않아야 합니다. 패스코드는 사용자의 iOS 기기를 해제하기 위해 사용되며, 생체 인증이 비활성화되어 있을 때 애플 페이 인증을 위해서 사용됩니다.

애플 페이 인증 디자인 가이드는 Apple Pay를 보시기 바랍니다.

Apple Pay
https://developer.apple.com/design/human-interface-guidelines/apple-pay/

Face ID and Touch ID

가능하면 생체 정보 인증을 지원하시기 바랍니다. 페이스 ID와 터치 ID는 안전하고 사람들이 신뢰하는 안전하고 친근한 인증 방법입니다. 사용자가 활성화된 생체 정보 인증을 갖는 경우 사람들이 어떻게 작동하는지 이해하고 있다고 가정할 수 있으며, 편리함을 인정한다고 생각할 수 있고, 가능하면 이 방법 사용을 선호한다고 생각할 수 있습니다. 사람들이 기기에서 생체 정보 인증을 비활성화 하는 선택을 할 수도 있다는 것을 기억해야 하며, 그렇기 때문에 앱은 이와 같은 시나리오 처리에 준비되어 있어야 합니다.

인증을 위한 하나의 방법을 사람들에게 제공하시기 바랍니다. 사람들이 인증 방법을 선택할 필요가 없을 때가 가장 직관적입니다. 페이스 ID와 같은 하나의 옵션을 제공하시기 바랍니다. 시작 방법이 실패했을 때에만 대안으로 사용할 수 있는, 사용자 이름 및 암호를 요청하는 것과 같은 대안을 제공하시기 바랍니다.

사용자 액션에 대한 응답에서만 인증을 시작하시기 바랍니다. 버튼 탭과 같은 명시적 액션이 사용자가 인증을 원하고 있다는 것을 보장할 수 있습니다. 페이스 ID의 경우 사용자가 카메라에 얼굴을 비출 수 있는 가능성을 증가시킵니다.

인증 방법을 항상 확인하시기 바랍니다. 예를 들어 페이스 ID를 사용해서 앱에 로그인하기 위한 버튼은 "Sign In."이 아닌 "Sign In with Face ID"의 제목이 붙어야 합니다.

인증 방법을 정확하게 참조하시기 바랍니다. 페이스 ID를 지원하는 기기에서 터치 ID를 참조하지 않아야 합니다. 터치 ID를 지원하는 기기에서 페이스 ID를 참조하지 않아야 합니다. 기기의 기능을 확인하고, 적합한 용어를 사용하시기 바랍니다. 개발자 가이드는 LABiometryType을 보시기 바랍니다.

LABiometryType
https://developer.apple.com/documentation/localauthentication/labiometrytype

앱 내부에서 생체 정보 인증 선택에 대한 설정 제공은 피해야 합니다. 시스템 수준에서 생체 정보 인증이 활성화되어 있는 경우 사용자가 이를 사용하길 원한다고 가정하시기 바랍니다. 시스템 수준에서 생체 정보 인증이 비활성화되어 있을 때, 사용자는 앱 내부에서 생체 정보 인증이 활성화되어 있는 것처럼 보이는 상태가 될 수 있습니다.

시스템 인증 기능을 나타내는 아이콘을 사용하지 않아야 합니다. 사용자가 시스템의 터치 ID(thumbprint) 및 페이스 ID 아이콘처럼 생긴 아이콘을 보는 경우 인증을 해야 한다고 생각할 수 있습니다. 인증 기능을 나타내기 위한 아이콘 사용은 비일관성을 생성하고 혼란을 초래하며, 특히 아이콘이 색생이 있는 경우, 큰 사이즈로 표시되는 경우, 맥락을 버서나서 제공되는 경우에 더 그렇습니다.

개발자 가이드는 Local Authentication을 보시기 바랍니다.

Local Authentication
https://developer.apple.com/documentation/localauthentication

0개의 댓글