이 글은 애플 앱스토어(App Store)에 앱을 제출하고 심사하는 과정에서
여섯 번째로 심사관에게 reject 심사를 받으며 발견한 문제를 해결해 나간 실제 경험을 정리했다.

그 외에도 애플 가이드라인에 명시되어 있는 부분과 대조하여 발견한
실제 코드와 불일치하거나 불필요한 권한 요청에 대한 부분을 수정한 내용까지 정리했다.

 

이 글은 이전에 작성했던 네번째, 다섯 번째 reject 경험담에 이어지는 내용이다.
https://myuslifejournal.tistory.com/129

 

##APP Sotre 심사에서 또 한번 지적한 '카메라 접근 권한 거부 시' 발생한 무한 로딩 오류

지난번에 오류를 수정한 부분을 정리해서 심사관에게 답변을 보냈던 것이 꽤 좋은 과정이었다.
내가 만든 앱에는 카메라를 접근하는 방법이 크게는 두 가지, 자잘하게 나눠서는 네 가지 경로로 구성되어 있다.

상황 1: Action A -> 카메라 사용 옵션 B/C or 사용하지 않는 옵션 D 중 선택 질문 
상황 2: Action 없이 바로 카메라를 사용하는 메뉴로 이동 -> 카메라 사용 옵션 B/C 

결국 상황 1과 상황 2의 결과에는 카메라 사용 옵션 B와 C 중 선택을 할 수밖에 없는 구조이다.
이 과정에서 카메라를 켰을 때, 사진 촬영에 대한 권한 요청을 묻는 다이얼로그 창이 뜨고, 그것을 거절했을 때 화면이 전환되면서 무한정 로드되는 현상이 발생했다.

이 부분에 대한 오류를 잡은 뒤, '카메라 사용 권한이 꺼져있다. 설정에 가서 권한을 켜야 기능을 이용할 수 있다'는 안내 메세지를 몇 초간 띄우는 작업을 생성했다.
그리고 카메라 권한을 껐을 때 '카메라 사용 옵션 B'처럼 '카메라 사용 옵션 C'에서 카메라 촬영 버튼을 누르면 똑같이 권한 설정 조정에 대한 안내 메세지가 뜨는지도 확인했다. 

이 과정들은 아이폰과 아이패드 기기들에서도 이뤄졌고 문제를 모두 해결했다고 생각했다.

검은색 화면에서 무한 로딩 중이라는, 심사관이 찍은 첨부 사진

##심사관의 예상하지 못한 문제 발생 포인트의 발견

그렇다 하면 이번에 발견한 심사관의 '같은 문제 발생'의 포인트는 어디였을까.
황당하게도 '카메라 사용 옵션 C'부터 작동했을 때의 부분이었다.

분명 지난번에 카메라 옵션 B에 대한 부분의 권한 요청과 그에 대한 무한 로딩의 문제를 해결하면서, 카메라 옵션 C에 대한 부분까지 완벽하게 구현되는 것을 보았다.
그런데 지금와서보니 카메라 옵션 C에 대해 권한 요청을 했을 때 '거부'를 누르면 지난번과 똑같이 문제가 발생하는 것이었다.
모든 옵션들은 '거부를 했을 경우, 동의했을 경우'를 무작위로 테스트를 할 때마다 다른 경우가 발생할 수 있다는 것을 알게 된 순간이었다.

감사하게도 심사관은 나의 지난 '오류 수정 보고' 메세지를 유심히 봤는지, 내가 발견했던 부분의 경로가 아닌 다른 부분이었다는 점을 콕 집어서 오류의 발생 지점을 알려주었다. 어쩌면 심사관의 배려해 주는 마음 덕분에 그런 친절한 메세지를 받은 것도 있겠지만, 가능하면 리젝에 대한 메세지를 받더라도 그냥 넘기지 말고, 오류 수정에 대한 보고를 하는 편이 좋겠다는 생각이 들었다.

 

##그 외 문제점 발생 요지 발견 및 수정, 개선

  • 발견한 문제1: 마이크 권한
    - 마이크 기능이 전혀 필요하지 않은 부분에서 마이크 기능 권한 요청에 대한 부분이 설계가 되어 있었음: 사용하지 않는 권한 요청으로서 리젝 될 확률이 높음

  • 발견한 문제2: 로컬 네트워크 권한
    - 인터넷 연결 확인용이라며 권한을 요청 중. 단순 인터넷 상태 체크에는 이 권한이 필요 없음.: 불필요한 민감 권한 요청으로 간주될 수 있음.

  • 발견한 문제3: 개인정보처리방침 불일치
    -생체 인증: 방침에는 FaceID 사용이 명시되어 있으나 코드에는 관련기능이 아예 없어서 허위 기재로 보일 수 있음.
    -데이터 삭제 기능이 설정 파일만 지우고, 사진은 기기에 남겨두지 않음. 완전 삭제를 보장하지 않아 문제가 될 수 있음.

  • 발견한 문제4: 문구 및 가격 표시
    -ATT 문구: 허용이 필수라는 표현이 강제성을 띄어 가이드라인(5.1.2) 위반 소지가 있음
    -가격표시: 앱스토어에서 가져온 실제 가격이 아니라, 텍스트로 직접 적은 가격을 보여주고 있음. 환율/ 세금 변경 시 실제 결제 금액과 달라지면 리젝 사유가 됨.

 

##문제 해결 및 리스크 완화 조치 완료

  • 마이크 권한과 로컬 네트워크 권한을 완전히 제거
  • ATT 문구 수정(한국어/영어 모두 적용)
  • 개인정보 처리방침 수정: 실제 코드에 없는 생체인증 관련 조항 삭제, 카메라 및 결제 정보 항목은 유지하되 번호를 재정렬하여 논리적 매끄러움을 유지
  • 데이터 즉시 삭제라는 개인정보처리방침의 약속을 기술적으로 충실히 이행하도록 구현
  • 환율이나 가격 변경 시에도 정확한 스토어 가격을 보여주도록, 앱스토어에서 실시간으로 가져온 가격을 표시하도록 변경

 

앱 심사관들은 어떻게 내가 찾아내지 못하는 경로로 오류들을 발견하는지 신기하기도 하고, 그들의 끈기와 노고에 감사하다는 생각도 들었다. 나도 매번 모든 상황을 파악해 보고자 여러 번 테스트를 하고 오류 검증을 한다. 그럼에도 오류는 어디선가 계속 발생하는 것 같다. 언젠가 여러 사용자가 쓰다 보면 발견할 수 있는 문제를 다각도로 시간을 들여 찾는 일이기 때문에, 얼마나 귀찮게도 여러 사람의 입장이 되어 앱을 뜯어봐야 할 일인지 도무지 상상이 되지 않는다.

또 한편으로는 이렇게 여러번의 오류를 발견하다가 앱 심사가 중도에 거절되다 못해 기각되진 않을까 두렵기도 하다.
이 다음번에는 부디, 정말로 좋은 소식이 있었으면 좋겠다.

+ Recent posts