Play Store 및 App Store 앱 출시 참고사항
Play Store 및 App Store 앱 출시 참고사항
회사에서 Flutter 앱 개발을 완료하고 나서, 직접 Google Play Store와 Apple App Store 앱 출시를 진행했다. 이번 글을 통해 앱 심사 요청 과정에서 겪은 상황들을 정리하여 기록하고, 추후 다른 앱 출시 준비 기간을 단축하려 한다. Google Play Store와 Apple App Store의 앱 심사 요청에 공통적으로 준비해야 될 사항에 대해 알아보고, 더 나아가 상대적으로 까다로운 App Store에 앱 출시를 하기 위한 유의사항에 대해 작성해본다.
앱 출시 준비 공통 사항
- 개인정보보호정책(개인정보처리방침) 준비
회원가입이 필요한 앱인 경우, 개인정보보호정책이 준비되어 있어야 한다. 직접 앱 출시를 준비하였던 나도 우리 회사의 앱을 출시하기 위해 법무팀에서 개인정보보호정책을 문서로 작성하여 마련해주었다. 그래서 나는 해당 문서를 간단한 HTML 페이지로 만들어서 옮긴 후, AWS S3 및 CloudFront를 통해 배포했다. 회사에서 공식으로 진행하는 프로젝트는 개발자가 직접 개인정보보호정책을 만들 필요가 없지만, 개인 개발자가 앱을 출시하기 위해선 스스로 직접 개인정보보호정책을 마련해야 한다. 그래서 개인정보보호 포털에서 개인정보보호정책을 생성할 수 있는 서비스를 제공해주고 있다. 개인정보보호 포털을 통해 생성하여 다운로드하면 개인정보보호정책 이슈는 해결된다.
- 참고
https://www.privacy.go.kr/a3sc/per/inf/perInfStep01.do
> 메인
개인정보 처리방침 만들기 개인정보 처리방침 간단히 만들기 개인정보 처리방침을 간단하게 작성해 보세요. 개인정보 처리방침 새로 만들기 - 개인정보보호법 및 시행령, 표준 개인정보 보호지
www.privacy.go.kr
개인정보보호정책은 준비됐지만, 알다시피 앱 출시를 위해서는 개인정보보호정책 사이트 링크를 첨부해야 한다. 개인 개발자가 유료 호스팅 서비스를 구매하여 링크를 첨부하기엔 부담될 수 있고, 그렇다고 링크를 첨부하지 못하면 앱 출시를 하지 못한다. 이 난감한 상황에서 해결할 수 있는 방법이 당연히 있다. 여러 방법이 있지만, 구글 사이트 서비스를 활용하는 것을 추천한다. 구글 사이트를 통해 새 문서를 만들고 개인정보보호정책 문서 내용을 붙여넣기 하고, URL을 생성하면 개인정보보호정책 URL을 마련하게 된다. 이 URL을 앱 심사 시에 첨부하면 된다.
- 참고
Google Drive: 로그인
이메일 또는 휴대전화
accounts.google.com
- 앱 심사를 위한 계정 별도 준비
회원가입 및 로그인이 필요한 앱이면, 대부분의 기능이 로그인이 필요하기에 앱 심사위원이 앱의 기능을 확인할 수 있는 테스트 계정을 생성해야 한다. 앱 심사위원은 해당 앱이 스토어 정책에 위반하는지 점검해야 하기에 앱의 대부분 기능을 테스트한다. 그렇기에 앱의 모든 기능을 이용할 수 있는 마스터 테스트 계정을 생성해야 한다.
앱 로그인 방식이 OAuth2와 같은 소셜 로그인을 사용하는 경우, 테스트 계정 생성 시 2차 인증을 하지 않는 소셜 계정을 사용해야 한다. 2차 인증을 해야하는 소셜 계정으로 테스트 계정을 생성할 경우, 앱 심사위원이 로그인을 하지 못해 앱의 기능을 테스트 할 수 없으므로 이로 인해 앱 심사가 거절된다. 그렇기에 2차 인증이 필요없거나 2차 인증을 해제할 수 있는 소셜 계정으로 테스트 계정을 생성해야 한다.
테스트 계정 생성 후, 스토어의 앱 액세스 관련 설정에 들어가 테스트 계정 정보(아이디 및 비밀번호)를 작성하고, 해당 계정을 로그인하기 위한 방법을 설명하는 것이 좋다. 아무런 설명 없이 계정 정보만 알려주면 앱 심사가 거절된다.
- 앱 심사에 필요한 정보(또는 설명)는 영어로 작성
위에서 언급한 계정 정보에 대한 설명은 영어로 작성하는 것이 좋다. 스토어 내 한국어 현지화가 잘되어 있는데 왜 영어로 작성해야 하는 지 궁금할 수 있다. 앱 출시를 직접 준비하다보니 알게 된 사실인데, 우리나라 사람이 아닌 외국인이 앱을 심사하는 경우가 있다. 앱 관련 정보 및 설명을 한국어로 작성하여 앱 심사를 요청한 적이 있었는데, 엉뚱한 사유로 앱 심사가 거절된 상황이 있었다. 그래서 세계에서 가장 많이 쓰이는 언어인 영어로 번역하여 앱 심사를 요청한 결과, 그제서야 앱이 통과됐었다. 외국인이 심사할 수 있다는 걸 고려하고 심사위원이 참고할 만한 앱 정보는 영어로 작성하는 것이 가장 빠른 앱 심사가 가능하다고 생각한다. 다행히 요즘은 구글 번역이 잘해주니 영어로 작성해야 된다는 부담감은 내려놓을 수 있다.
App Store 앱 출시 관련 유의사항
- Apple 로그인 기능 필수 탑재
구글, 카카오, 네이버 등 소셜 매체의 간편로그인 기능을 구현하였다면 Apple 간편로그인도 필수로 추가해야 한다. 이는 Apple 정책으로써 반드시 준수해야 하는 규정이다. 또한, Apple 간편로그인 버튼 디자인에 대해 Apple이 공식으로 제공하는 가이드라인이 존재한다. HIG(Human Interface Guideline)에 속한 가이드라인이기에 iOS 앱 개발하면서 준수해야 하는 여러 인터페이스 가이드라인 중 하나라고 할 수 있다. 버튼 바탕색 및 글씨색, 문구 등 이 가이드라인을 준수해야 Apple 앱 심사를 통과할 수 있다.
- 참고
https://developer.apple.com/design/human-interface-guidelines/technologies/sign-in-with-apple/
Introduction - Technologies - Human Interface Guidelines - Design - Apple Developer
Sign in with Apple Sign in with Apple provides a fast, private way to sign into apps and websites, giving people a consistent experience they can trust and the convenience of not having to remember multiple accounts and passwords. Supporting Sign in with A
developer.apple.com
- 개인정보 수집 목적에 대한 질문
개인정보 수집하는 앱인 경우, 개인정보를 수집하는 목적에 대해서 Apple이 답변을 요구한다. Apple 정책 기조 상 개인정보에 대해 엄격하게 관리하는 시스템이기에 합당한 개인정보 수집 목적이 아니라면 앱 심사가 거절될 수 있다. 그렇기에 개인정보 수집 목적에 대한 명확하고 자세한 답변이 필요하다. 내가 직접 앱 심사 거절 당하면서 Apple이 요구했던 개인정보 수집 목적에 대한 질문은 아래와 같다. 아래 항목을 참고하여 미리 답변을 준비하고 빠른 앱심사 재요청을 진행한다.
- What is the purpose of your app?
- Who is the target audience?
- Does your app access any paid content or services?
- What are the paid content or services?
- Do individual customers pay for the content or services?
- If no, does a company or organization pay for the content or services?
- What are the main features of the app?
- Why are mobile number and address required for registration?
- Why does your app require users to provide their name after using Sign in with Apple?
- 앱 접근 허용에 대한 명확한 메시지
iOS 계열 Device를 사용하는 사람들에게는 아래 캡처본과 같이 익숙한 모습의 Dialog가 나타나면서 해당 접근 권한에 대한 허가를 묻는 여부를 많이 목격했을 것이다.
위 Dialog에서 해당 권한을 요구하는 이유에 대해 설명하고 있는데, 이 때 사용자가 납득할 수 있는 합당한 이유를 제시해야 한다. Apple에서 심사 항목 중 권한을 요구하는 이유에 대해 명확하게 표시하도록 되어 있다. 그러다보니 말도 안되는 권한 요구 이유를 작성하게 되면 앱 심사가 거절될 수 있다. 해당 권한을 요구하는 이유에 대해 명확하고 납득할 수 있도록 작성하여 사용자가 정확한 판단을 할 수 있도록 유도해야 한다. Dialog에 표시할 메시지는 Info.plist에 포함되어 있으며, 해당 항목을 찾아서 수정하면 위 캡처본에 표시해놓은 영역처럼 문구가 화면에 표시된다.
- 계정 삭제에 대한 방법 안내
앞서 Apple은 개인정보에 대해 엄격하게 통제한다고 이야기 했던 것처럼, 사용자의 계정 삭제에 대한 권리를 중요하게 생각하고 있다. 그래서 Apple은 사용자 계정 삭제에 대한 방법을 설명하도록 요구하고 있다. 아래와 같은 항목에 대한 답변을 성실하게 작성 후 앱 심사를 요청하면 부적절한 이유나 설명이 포함되어 있지 않는 한 앱 심사를 통과시켜준다.
* 2023/01/14 업데이트 *
- App Store Connect NSLocation 문구 누락 경고 버그(?)
출시하려고 하는 앱이 위치 정보를 수집하지 않더라도, App Store Connect에 앱을 업로드하면 위치 추적 허용하는 이유(NSLocation 관련)를 작성하지 않았다는 경고 메일을 수신하는 경우가 있다.
App Store Connect에 개인 정보 수집 항목에 위치 추적을 포함하지 않았고, App 내 소스 코드에서도 위치 추적 기능과 이에 대한 허용 Dialog가 노출되지 않도록 했음에도 불구하고 이러한 경고 메일을 App Store Connect가 자동으로 전송하는 경우가 있는 것 같다. 물론 Flutter 기반 iOS 앱이기에 완전한 Native 앱이 아니라는 점을 감안해야 하겠지만, 소스 코드 내에 위치 추적 허용 관련 기능을 구현하지 않았기에 이러한 경고 메일을 수신하는 것이 의아하다. 이전 버전에 위치 추적 허용 Dialog가 화면에 나타나도록 구현했었던 것으로 인해 App Store Connect가 이 부분이 누락된 것을 감지해서 경고 메일을 전송하는 것 같기도 하다. 아무튼 앱에 위치 정보 관련 수집 기능이 탑재되어 있지 않고, Info.plist의 NSLocation 관련 항목이 없는 상태에서 앱 심사 요청을 해도 심사가 통과가 되는 것을 보니 이러한 경고 메일을 무시해도 크게 지장 없는 듯 하다. 이러한 경고 메일을 받았다면 크게 당황하지 않아도 된다.