View
[iOS 앱 개발] Human Interface Guideline - App Architecture (2)
sm_amoled 2019. 7. 31. 21:44[iOS 앱 개발] Human Interface Guideline - App Architecture (2) : Onboarding, Requesting Permission, Settings
쭉 읽어봤는데, 확실히 당연히 이렇게 작성해야지! 하는 내용들로 가득차있네요. 아마도, 이용하던 앱들이 다들 이 가이드라인을 따라서 만들었기 때문에 이런 직관적으로 만들고, 사용자를 배려하도록 만들라는 내용에 익숙한 것 같네요 ㅋㅋㅋㅋ 부스트코스를 이용해 iOS와 Swift에 대해 공부하는 사람들이 여기와서 이렇게 정리된 글을 읽으면서 같이 직관적이고 흐름을 찾기도 편한 좋은 애플리케이션을 개발할 수 있으면 좋겠습니다!
아래에 정리해둔 내용들은 시작, 권한 부여, 설정에 대한 내용들입니다!
Onboarding
앱 실행 시간 (Launch time - 시작하자마자를 의미하는 듯 하네요, 아래에서 계속 launch라는 단어로 쓰겠습니다) 은 새로운 사용자에게 처음 정보를 제공하는 기회이자 되돌아온 사용자가 작업을 이어서 할 수 있게 연결해주는 시간이다. Launch experience를 간편하고, 재미있고, 유익하게 디자인하자!
Provide a launch screen
이 앱이 시작 컨텐츠를 로딩하는 동안에 launch화면은 앱을 시작했을때 나타나서 사용자에게 앱이 빠르고 반응을 잘 한다는 이미지를 심어준다. 이 화면은 다시 빠르게 앱의 첫화면으로 전환되기 때문에, 다른 화면이나 언어와 비슷하거나 통일감을 줄 수 있어야 한다.
Launch in the appropriate orientation
만약 당신이 만든 앱이 가로모드와 세로모드를 모두 지원한다면, 현재 화면의 방향에 맞추어 launch 되어야 한다. 만약에 앱이 한 방향만에서 실행된다면, 그 방향에 맞게 launch된 다음 사용자의 필요에 따라 회전시킬 수 있게 해줘야 한다. 특별한 이유가 없다면 왼쪽/오른쪽으로 기울어진 장치가 가로모드로 화면을 보여준다면, 정상적으로 화면 방향이 돌아간 상태가 보여지도록 해야한다.
Get to the action quickly
splash screen ( 네이버 앱을 시작하면 나오는 네이버 로고 같은 화면을 말합니다 ), 메뉴, 화면에 대한 설명 같은 앱 사용에 있어서 시간을 질질끄는 요소들을 피하자. 대신에, 사람들이 바로 사용할 수 있도록 만들자. 만약에 앱이 튜토리얼이나 시작순서가 필요하다면, skip할 수 있도록 방법을 만들고 다시 앱을 실행했을 때는 보여지지 않도록 하자.
Anticipate the need for help
사용자가 앱을 사용하다가 막힐만한 곳에 대한 대책을 미리 마련해놓자. 예를 들면, 게임에서 일시정지를 하거나 캐릭터가 성장을 하지 않을 때 플레이어에게 팁을 던져줄 수 있다. 플레이어가 튜토리얼을 하면서 놓쳤던 부분을 다시 알려주거나 튜토리얼을 한번 더 하도록 유도할 수도 있다.
Stick to the essentials in tutorials
처음 사용자에게 길잡이를 제공하는것은 괜찮다. 그러나 가르쳐주는 것은 앱 디자인에 있어서 썩 좋은 대체제는 아니다. 가장 중요한 것은 애플리케이션을 직관적으로 만드는 것이다. 만약에 많은 양의 길잡이가 앱에 필요하다면, 앱의 디자인을 다시한번 살펴볼 것을 권장한다.
Make learning fun and discoverable
뭔가를 하면서 배우는 것이 설명을 읽으면서 배우는 것보다 훨씬 재미있고 효율적이다. 애니메이션이나 상호작용을 이용해 앱의 흐름속에서 천천히 배워나가게 하자. 스그러나 상호작용으로 스크린샷이 나타나는 것은 지양해야 한다.
Avoid asking for setup information up front
사람들은 앱이 그냥 스스로 동작하기를 기대한다. 앱을 대다수를 위해 디자인하고 소수는 그들의 요구에 맞게 환경을 설정하도록 하자. 좀 더 넓게 보면, 장치의 설정에 접근해 사용자가 맞춰놓은 설정을 가져올 수 앴다. 이를 통해 장치의 기본값과 앱의 설정을 맞추고, iCloudr같은 서비스를 동기화할 수도 있다. 만약에 설정 정보에 대해 꼭 물어야 한다면, 앱을 켰을 때 처음 내용을 보여주고, 후에는 앱의 설정창에 들어가서 수정할 수 있도록 하자.
Avoid showing in-app licensing agreements and disclaimers
앱스토어에서 앱을 다운받기 전에 필요한 허가를 요청하고 거절하도록 해라. 만약에 앱속에 이러한 항목들을 넣어야 한다면, 사용자경험을 망치지 않는 선에서 적절하게 포함시키자.
Restore the previous state when your app restarts
사용자가 이전에 앱에서 갔던 위치로 돌아가기위해 똑같은 절차를 밟지 않도록 하자. 앱의 상태, 설정 등을 저장해두고 앱을 다시 실행시켰을 때 그 상태로 돌아가도록 만들자.
Don't ask people to rate your app too quickly or too often
너무 일찍 또는 너무 자주 앱스토어 평가에 대해 요청하는 것은 짜증날 일이고 수용할 괜찮은 평가의 양을 줄여버리는 효과를 가져온다. 좋은 피드백을 받기 위해서는, 사람들에게 평가를 하기 전에 의견을 형성할 충분한 시간을 주어야 한다. 항상 평가를 제출하지 않을 옵션도 마련해두어야 하고, 사람들이 평가를 제출하도록 만드는 것에 주의를 기울이지 않아야 한다.
Don't encourage rebooting
재시작은 시간이 많이 소요되고 앱의 신뢰도를 떨어뜨리고 사용이 어렵게 만든다. 만약에 앱에 메모리이슈나 다른 이슈가 있어 실행에 어려움을 겪는다면, 이러한 이슈에 대해 알려야 한다.
Requesting Permission
사용자는 애플리케이션이 현재 위치, 달력, 연락처, 리마인더, 사진 등의 개인정보에 접근하려 할때 애플리케이션에게 접근 권한을 부여해야 한다. 물론 이러한 정보에 접근하여 사용하는 애플리케이션에 사람들은 편리함을 느끼지만, 사용자들은 또한 그들의 개인정보를 통제할 수 있기를 원한다. 예를 들어, 사람들은 찍은 사진에 사진을 찍은 위치가 자동으로 태그되기를 바라고 근처에 있는 친구를 찾을 수 있기를 바라지만 이러한 선택지를 비활성화할 수 있는 선택지도 원한다.
Request personal data only when your app clearly need it
아무런 연관이 없어 보이는데도 개인정보를 요구하는 경우, 이것은 의심스러워 하는 것이 당연하다. 허가에 대한 요청이 사용자의 개인정보가 분명하게 필요할 경우에만 요청할 수 있도록 하자. 예를 들어, 위치 추적에 대한 정보가 필요한 경우에만 사용자의 현재 위치 데이터를 가져올 수 있도록 앱을 만들어야 한다.
Explain why your app needs the information
허가 요청의 목적이나 설명, 그리고 예시를 담은 Custom text를 알림과 함께 제공하자. 내용이 간단하고 명료해야 하며, 문장의 형태로 작성해야 한다. 그리고 정중한 표현을 사용하여 사람들이 압박을 느끼지 않아야 한다. 시스템이 앱의 이름을 표시하기에 내용에 앱 이름을 포함할 필요는 없다.
Request permission at launch only when necessary for your app to function
사용자는 개인정보를 가져오는 허가의 목적이 명확하다면, 이에 의해 앱 이용에 방해를 받고싶지 않을 것이다.
Don't request location information unnecessarily
위치 정보에 접근하기 전에, 시스템에서 위치서비스가 활성화되어있는지 먼저 체크해야 한다. 이를 이용하면, 그 정보가 진짜 필요하기 전까지는 허가에 대한 알림을 늦출 수 있다. 또는, 알림을 주지 않을 수도 있다.
Use the system-provided alert
표준 허가 요구 알림에서 custom text를 수정할 수 있다. 그러나 알림의 표준 액션이나 표준 형태를 수정하는 것에 대해서는 피해야한다.
Settings
몇몇 애플리케이션은 설정을 하거나 형태, 색상등의 선택을 제공해야하는데, 대부분의 앱은 이러한 것을 피하거나 지연시킬 수 있다. 성공적인 앱은 그 경험에 익숙해지도록 여러 편리한 방법들을 제공하면서, 대부분의 사람들에게 기본 설정 그대로 먹힌다. 당신의 앱이 대부분의 사람들의 기대에 맞게 작동하도록 디자인할때, 당신은 설정에 대한 필요를 줄일 수 있을 것이다.
Infer what you can from the system
만약에 사용자, 장치, 주변환경에 대한 정보가 필요하다면, 유저에게 이 정보에 대해 요청하는 것 대신에 가능하다면 시스템에게 정보를 묻자. 예를 들면, 사용자에게 집 주소를 입력하도록 요청하여 현재 지역 정보를 활용하는 대신에, 시스템에게 현재 주소를 사용하는 것에 대한 허가를 요청하자. 사용자가 그들의 정보에 접근하는 것을 허가하지 않으면, 직접 입력하는 방식으로 바뀌게 된다.
Thoughtfully prioritize configuration options within your app
당신의 앱의 메인화면은 핵심적이거나 자주 바뀌는 선택지를 배치하는데 좋은 위치이다. 두번째 화면(하위 화면이나 숨겨진 화면)은 자주 바뀌지 않는 선택지를 배치하기에 좋다. ( 설정화면은 한 번만 설정하거나 자주 설정하지 않으니 안쪽에 숨어있지만, 사파리의 탭 위치같은건 자주 바뀌는 항목이니 외부에 노출되어있는걸 생각해보자! )
Expose infrequently changed configuration options in Settings
설정 앱은 전체적인 시스템을 관통하는 설정을 결정짓는 곳이지만, 사용자가 거기에 접근하기 위해서는 당신이 만든 앱을 종료해야 한다. 이것은 당신의 앱에 설정을 적용시키기 편리한 방법중 하나이다. 만약에 진짜 잘 바꾸지 않을 설정이 있다면, 설정 앱에서 등록할 수 있도록 하자.
Provide shortcuts to Settings when appropriate
당신의 앱에 설정으로 바로갈 수 있는 기능을 메인화면에서 제공해라. ( Settings -> App -> Privacy -> Location Service 로 들어갈 설정화면을 간단하게 버튼 하나로 접근할 수 있게 만들어주자 )
'Develop > iOS 개발' 카테고리의 다른 글
[iOS 앱개발 - Swift] 네비게이션 컨트롤러(드릴-다운 인터페이스) 구현해보기 (0) | 2019.08.02 |
---|---|
[Swift 개념] 네비게이션 컨트롤러 (0) | 2019.08.01 |
[iOS 앱 개발] Human Interface Guideline - App Architecture (1) (1) | 2019.07.30 |
[Swift 기본 문법] Swift를 처음봤을 때 낯선 문법들 (1) | 2019.07.29 |
[Swift 개념] AVAudioPlayer 클래스 - 음악 재생과 제어 (0) | 2019.07.28 |