안녕하세요 🌱 Lawn입니다 HIG 스터디 모임을 통해 공부한 내용을 정리했습니다.
사용자의 개인 정보는 가장 중요하다. 사용자가 앱을 신뢰할 수 있도록 하려면 개인 정보와 관련된 데이터와 resources의 사용 방법을 투명하게 공개해야 한다. 예를 들어 다음과 같은 데이터에는 접근 권한을 요청해야 한다.
❗️
Important
iOS14.5, iPadOS 14.5부터 사용자를 추적하거나 기기의 광고 identifier에 접근하려면 AppTrackingTrasparency 프레임워크를 사용하여 사용자의 권한을 요청해야 한다. 자세한 내용은 User Privacy and Data Use 참조하자.
새로운 앱이나 업데이트된 앱을 제출할 때, 앱의 개인 정보 정책과 수집한 개인 정보 관련 데이터를 제공하면 App store가 제품 페이지에 관련 정보를 표시한다. (App store Connect에서 관련한 정보를 언제든지 관리할 수 있다.) 사용자는 제품 페이지의 개인 정보 관련 사항들을 확인하여 앱을 다운로드 할지 결정한다. 더 자세한 사항은 다음에 자세히 설명한다. App privacy details on the App Store
App Store의 제품 페이지에는 사용자가 다운로드하기 전에 앱의 개인 정보 정책을 이해하는 데 도움을 준다. 다음 사진에서 확인할 수 있다.
사용자 데이터나 보호된 resources를 사용하기 전에, 사용자의 permission(동의)를 얻어야 한다. 시스템은 사용자 개인 정보 또는 보호된 resources의 액세스 요청을 볼 수있는 표준 alert을 제공한다. 앱이 왜 개인 정보를 필요로 하는지에 대한 설명과 alert 요청에 대한 설명을 제공해야 한다. 사용자는 설정 > 개인 정보 보호에서 선택한 사항들을 변경할 수 있다.
앱에서 데이터나 리소스의 접근이 명백하게 필요로 할 때 엑세스 권한 요청을 해야 한다. 개인 정보나 기기의 기능(마이크, 카메라)에 대한 엑세스 권한 요청에 대해 사용자가 의심스러워하는 것은 자연스럽다. 특히 반드시 필요한 경우가 아니라면 더욱 그럴 것이다. 사용자가 엑세스 권한 요청이 필요한 기능을 사용할 때까지 기다리고, 해당 기능을 사용할 때 권한을 요청하는 것이 합리적이다. 위치 요청의 경우 location button을 사용하여 사용자의 위치를 공유할 수 있다.
🍀
Comments
아이폰에는 Zone 개념이 있다. 꼭 GPS만이 아니라 셀룰러나 Wifi에 Mac 주소가 연결되어 있으면 위치정보를 알 수있다. 이런건 애플이 허용한다.
앱이 작동하는데 데이터 또는 리소스가 필요한 경우에만 실행 시 권한을 요청한다. 앱이 이런 정보를 요청하는 이유가 명백하다면 사용자가 앱의 처음 실행 시간으로 인해 불편함을 느끼지 않을 것이다. 사용자가 앱을 실행하자마자 app trackig을 수행하고 싶다면, tracking 데이터를 모으기 전에 시스템 제공 alert를 표시해야 한다.
앱에서 요청하는 데이터나 리소스를 어떻게 사용하는지 정확하게 기술한 문서를 작성한다. 표준 alert는 앱 이름 뒤에 또는 거부 버튼이나 승인 버튼 앞에 puporse string 또는 usage description이라 불리는 문서를 보여준다.
이 문서는 간단하고 구체적이며 간결하고 이해하기 쉬운 완전한 문장으로 작성 해야한다. 이를 위해 수동태 사용을 자제하고 문장 끝에 마침표를 포함하는 문장 스타일의 capitalization을 사용한다.
다음은 purpose string의 예시이다.
다음은 표준 시스템 alert의 몇 가지 예시이다.
🍀
Comments
위 사진은 이렇게 문구를 쓰라는 말인데 과연 이렇게 안쓴다고 애플이 리젝할까??? -> 한다. 앱 스토어고 어플도 하나의 상품이다 소비자에게 친절할 필요가 있다. 위치정보가 꼭 필요하지 않은데 단순히 편하려고 위치정보를 백그라운드로 쓰면 그것도 리젝사유이다.
현실적으로, 사용자는 앱이 권한을 요청하는 이유를 이미 인지하고 있다. 만약 권한 요청에 관한 추가적인 정보를 표시해야 한다면 system alert 전에 custom(사용자 정의) screen을 보여줄 수 있다. 다음 가이드라인은 카메라, 마이크, 위치, 연락처, 캘린더, tracking을 포함하여 보호된 데이터 그리고 리소스를 접근하는 system alert전에 나타나는 custom screen에 적용된다.
하나의 버튼만 포함시키며 이 버튼은 alert가 열릴 수 있어야 한다. Custom screen에 alert를 열지 못하는 버튼을 생성하면 사용자는 결정을 선택할 수 없으므로 사용자는 오해를 할 수 있다. 다른 유형의 오해는 "Allow"라는 제목의 버튼을 custom screen에 사용하는 것이다. 만약 화면의 버튼의 제목이 alert를 여는 버튼과 의미적, 시각적으로 유사하다면 사용자는 제목의 의미가 무엇인지 인지하지 못한 채 alert의 버튼을 선택할 것이다. 이를 방지하기 위해서 Custom scree에 "Continue"또는 "Next"라는 1개의 버튼을 생성하여 사용자에게 system alert를 여는 동작이라고 명확하게 알리도록 설계한다.
추가적인 대안을 커스텀 스크린에 추가하지 말자. 예를 들어 close(닫기) 또는 cancel(취소)와 같은 옵션을 제공하여 system alert를 보지 않고 화면을 떠나는 방안을 제공하는 것을 피한다.
App tracking(앱 추척)이란 민감한 문제다. 그러나 어떤 경우에서는, tracking의 장점을 명확하게 기술하는 custom screen을 보여주는 것이 유용할 수 있다.
사용자는 때떄로 system alert를 읽는 것 없이 빠르게 건너뛰기 위해 탭을 누른다. 이러한 행동을 이용하여 결정에 영향을 미치는 custom messaging screen은 App Store의 검토에서 rejection(거부) 될 것이다. 여기 rejection이 된 몇 가지 custom-screen이 있다.
iOS15 이상부터 Core Location은 버튼을 제공하여 사용자의 위치를 액세스할 수 있는 권한을 앱에 부여한다. 앱의 location 버튼의 외형은 앱의 UI마다 다를 수 있지만 즉시 알아볼 수 있게 설계 해야 한다.
location 버튼은 기기의 위치를 요청할 수 있는 임시 권한을 앱에 부여한다. 만약 권한 승인의 항목이 없는 경우 location button을 tapping(탭) 하면 standard alert에서 "한번 허용"한 효과와 동일하다. 하지만 이전에 사용자가 While using the App(앱을 사용하는 동안)이라는 항목을 선택했다면 location 버튼을 탭 하는 것은 앱의 상태에 아무런 변화도 일으키지 않는다. apple developer 가이드에서, 다음 2개의 버튼을 볼 수 있다. LocationButton (SwiftUI) CLLocationButton(Swift).
사용자가 처음으로 앱을 열고 그리고 location 버튼을 탭 하면 시스템은 standard alert를 보여준다. Alert는 버튼을 사용하여 앱의 위치 액세스를 조작하는 방법을 이해하도록 돕고, 위치 공유가 시작될 때 location indicator(위치 표시기: 사용자의 현재 위치를 나타냄)를 상기시킨다.
사용자는 앱의 위치 권한 액세스를 한 번만 부여하려고 할 때 location button을 탭 하면 된다. 사용자가 앱의 동작을 멈추고 종료하면 위치 권한이 만료된다.
앱의 특정 기능을 위해 위치를 공유하는 간편한 방법을 제공하려면 location 버튼을 사용해라. 예를 들어 사용자의 위치는 메시지나 post(게시글)에 위치를 포함하거나 매장을 찾거나, 사용자의 위치에서 마주친 건물, 동물, 식물을 확인하는 데 도움이 될 수 있다. 만약 사용자가 앱에 "Allow Once"권한을 자주 부여한다면 alert를 띄우는 것 없이 위치를 공유하는 방법도 있다.
앱의 UI와 location 버튼이 조화를 이루도록 버튼을 customizing 해라. Customizing은 다음과 같이 할 수 있다.
Choose the system-provided title that works best with your features, such as "Current Location" or "Share My Current Location"
Choose the filled or outlined location glyph
Select a background color and color for the title and glyph
Adjust the button's corner radius
사용자가 location 버튼을 인식하고 신뢰하기 위해서, 다른 시각적인 요소들은 customizable 할 수 없다. 또한 시스템은 명암 대비가 낮은 색상 조합 또는 너무 높은 투명도를 가진 문제들에 대해 경고하여 버튼을 시각적으로 잘 보이게 만든다. 이러한 문제들을 해결하는 것뿐만 아니라 텍스트가 버튼에 잘 맞는지 확인할 필요가 있다. 예를 들어 버튼의 텍스트는 접근성 텍스트 크기 및 다른 언어로 번역될 때 잘리는 현상이 없어야 한다.
❗️
Important
시스템이 location 버튼에서 일관된 문제를 인식한다면 사용자가 탭을 누를 때 기기의 위치에 대한 접근 권한을 부여하지 않을 것이다. 이는 사용자들이 앱에 대한 신뢰를 잃게 만드는 원인이 될 수 있으니 조심해야 한다.
ShazamKit은 오디오 샘플을 ShazamKit 카탈로그와 custom 오디오 카탈로그를 사용하여 음성 인식을 한다. iOS 15 이상부터 앱은 ShazamKit을 사용하여 다음과 같은 기능을 한다.
현재 재생 중인 음악 장르에 맞는 그래픽으로 앱 만족도 향상
오디오와 동기화되는 자막 또는 수화를 제공하여 청각 장애가 있는 사용자가 콘텐츠에 액세스하는 기능 제공
음성 샘플을 얻기 위해 기기의 마이크가 필요한 경우, 이것에 대한 권한을 요청해야 한다. 다른 유형의 권한 요청과 마찬가지로 마이크 권한 요청이 필요한 이유를 사용자에게 설명하는 것은 중요하다.
ShazamKit이 마이크 액세스 권한을 받은 후에 다음 지침을 따라라.
녹음을 최대한 빨리 종료해라. 사용자는 인식을 위해 음성 권한을 허용할 때 마이크가 항상 켜져 있는 것을 원치 않는다. 개인 정보를 보호하기 위해 녹음을 할 때만 음성 권한을 허용한다.
사용자가 앱에서 인식한 노래를 사용자의 iCloud에 저장하도록 한다. 만약 앱이 인식된 노래를 iCloud에 저장하는 경우 사용자에게 이 작업을 승인할 수 있는 방법을 먼저 제공한다. 음악 인식 제어와 Shazam app은 인식된 노래의 소스(제목?)만 보여주지만 사용자는 인식된 콘텐츠를 저장할 수 있는 것에 편리함을 느낄 것이다.
개발자 가이드라인
ShazamKit