zGallery, 앱스토어 통과 !! (멀고도 험한 길)


resize_Available_on_the_App_Store_(black)

최근에 zGallery가 앱스토어 리뷰를 통과했습니다. (위 로고를 클릭하시면 앱스토어에 올라온 zGallery를 볼 수 있습니다.) 사실 zGallery가 앱스토어에 올라간 얘기를 하려고 하는게 아니라 까다로운 앱스토어 심사에 관한 얘기입니다.


알려진대로 지난 해 부터 앱스토어에 등재되는 모든 앱은 소위 샌드박싱이라는 일련의 보안 절차를 거치게 되어있습니다. 샌드박싱이 적용된 앱은 시스템에 대한 접근이 엄격히 제한됩니다. 네트워크나 카메라같은 일련의 주변장치를 함부로 사용할수 없을뿐더러 기존 사용자 정보에 대한 접근도 제한됩니다. 그러나 앱에 따라서는 인터넷 접근을 해야할 필요가 있는 앱도 있고 카메라나 사용자 정보를 이용해야만 하는 앱들도 있지요.
 
그런 앱들을 위해서 애플은 앱 개발자에게 앱이 필요한 기능을 명확하고 구체적으로 명시하길 요구하며 그걸 기준으로 해당기능에 대한 허용여부를 결정합니다.
 
그런데 문제는 이 샌드박싱의 제한사한중에 파일접근 제한이 있다는 게 문제가 됩니다. 샌드박싱된 앱은 지극히 제한된 접근 권한을 갖습니다. 오로지 앱만을 위한, 앱이 생성하거나 읽을수 있는 부분에서의 접근만 허용하지요.
 
그치만 이미 많은 수의 앱들이 그 이상의 파일 접근을 필요로 하면 일부 앱들은 전역적인 파일시스템에 대한 접근권한을 필요로 합니다. zCommander같은 파일관리자나 zGallery같은 이미지뷰어도 거기에 해당됩니다. 그러나 애플은 전역 파일시스템에 대한 접근을 엄격히 제한하는 원칙을 고수하고 있어서 이 부분에 대해서는 애플쪽의 권고사항을 엄격히 준수하지 않으면 앱 심사를 통과하기 어렵습니다.
 
zGallery가 그런 예였습니다. 2번인가 리젝당하고 3번째에 통과되었죠. 애플쪽에서 권고하는 사항은 다음과 같습니다.
 
1. 만약 샌드박싱 외부의 파일 시스템에 대한 접근을 시도하려면 반드시 Open Panel류의 기본 사용자 인터페이스를 통해서 그 접근 권한을 얻어야 한다.
2. 파일접근하려는 목적에 부합하는 기본 폴더를 정하고 (zGallery의 경우에는 Pictures 폴더) 이 것을 기본 폴더로 정한다.
3. 기본 폴더를 루트디렉토리로 설정해서는 안된다. 이것은 샌드박싱을 회피하려는 의도로 비춰지기 때문에 리젝사유가 된다.
4. 그러나 사용자가 명백하고 의도적으로 루트디렉토리를 선택하여 전역 파일시스템에 대한 접근권한을 얻는것은 허용한다.
 
1번의 사항은 한번 접근허용이 되면 그 정보를 디스크에 저장할 수 있어서 다음 번부터는 자동으로 접근허용이 되도록 구현할 수 있습니다. 4번의 사항은 애플쪽의 코멘트가 아닙니다만 결과적으로 저런 얘기가 됩니다.
 
쉽게 말하면 웬만하면 전역 파일시스템에 대한 접근을 허용할수 있는 뉘앙스를 풍기거나 조장하지 말아라. 이런 분위기라고나 할까요? 그래도 마운틴 라이언 초기 릴리즈버전때보다 유연해진 정책입니다. (당시에는 접근 허용된 폴더정보를 저장했다가 다시 쓰는 기능이 없어서 그냥 좌절했더랬죠.)
 
지금 zGallery보다 더 많은 파일접근권한을 요구하는 zCommander가 심사중입니다. (In Review가 3일이 넘어가네요.) 이 결과를 보면 애플쪽의 심사기준을 좀 더 명확하게 알수 있을것 같습니다.

by 우주인 | 2013/10/11 10:36 | OS X 앱 프로젝트 | 트랙백 | 덧글(1)

트랙백 주소 : http://woojooin.egloos.com/tb/3984732
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 우주인 at 2013/10/16 15:04
오늘 부로 zCommander가 앱스토어에 등록되었습니다. ㅎㅎ

https://itunes.apple.com/us/app/zcommander/id540356531?ls=1&mt=12

본 글에서 적은것과 동일하게 제출했더니 통과되는군요.

이제 샌드박스 문제로 리젝당하지 않는 정확한 방법을 터득했다고 봐도 되나요? ㅋㅋㅋㅋ

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶