코드푸시가 허용되는 이유

Tags
추가설명
 

참고링크

 

개요

당연히 구글 플레이스토어, 앱스토어 에서는 심사과정이 있고, 심사를 통과해야만 스토어에 앱을 올릴 수 있다.
즉, 리뷰를 거치지 않고서는 스토어에 올릴 수 없다는 뜻이다.
 
하지만 코드푸시는 언제든 코드를 수정할 수 있다는 점에서 리뷰과정을 우회하는 듯 보인다.
코드푸시가 막혀야 한다는 이야기들도 많고, 코드푸시가 왜 허용되는 것이냐에 의문을 품는 경우도 많다.
앱스토어와 플레이스토어의 가이드라인을 확인해 보자.
 

구글 플레이스토어

Device and Network Abuse의 세번째 문단을 보면 된다.
  • 구글 플레이의 업데이트 메커니즘이 아닌 다른 어떠한 방식으로의 소스코드 업데이트는 제한된다.
  • 이 제한은 Android API에 대한 간접 액세스를 제공하는 가상 머신이나 인터프리터에서 실행되는 코드에는 적용되지 않는다. (예: 웹 뷰 또는 브라우저의 JavaScript)
    • 즉, 예외 조항으로 인해 자바스크립트 번들은 이 제약이 적용되지 않는다.
An app distributed via Google Play may not modify, replace, or update itself using any method other than Google Play's update mechanism. Likewise, an app may not download executable code (e.g., dex, JAR, .so files) from a source other than Google Play. (제약사항) This restriction does not apply to code that runs in a virtual machine or an interpreter where either provides indirect access to Android APIs (such as JavaScript in a webview or browser). (예외사항)
💡
코드푸시는 JS Bundles를 업데이트할 뿐 네이티브 부분을 업데이트 하지 않으므로 허용된다!
 

앱 스토어

2015년 Apple Developer Program License Agreement의 3.3.2 문단을 통해 JavaScript와 assets의 에어 업데이트가 전적으로 허용되었고, 2017년(20170605) downloadable here에선 오히려 허용 범위가 더욱 확장됐다.

2015’s 3.3.2

2015년의 3.3.2 조항
2015년의 3.3.2 조항
인터프리트 코드는 모든 스크립트, 코드, 인터프리터까지 어플리케이션에 이미 패키징 되어 있는 상태여야야만 사용할 수 있고, 다운로드를 통해선 안된다. (제약사항)
다만 단 한가지 예외사항으로는 앱의 주요 목적을 변화시키는 경우가 아니라면, 애플의 빌트인된 WebKit 프레임워크 또는 JavascriptCore를 통해선 스크립트와 코드를 다운로드 받아서 사용할 수 있다. (예외사항)
 
다운로드 받아서 실행할 수 있다는 예외조항이 있지만 다소 제약사항이 있다.

2017’s 3.3.2

2017년의 3.3.2 조항
2017년의 3.3.2 조항
아래 조항들만 지켜진다면, 인터프리트 코드를 다운로드 하여 실행할 수 있다. 허용범위가 확장된 것이다.
  • 앱의 주요 목적을 변경하지 않고,
  • 별도의 스토어 수단을 만들지 않고 (인앱 결제 우회를 하지 말라는 뜻)
  • 보안 기법들을 우회하지 않는다.
 
위의 조건들만 위반하지 않는다면 자바스크립트 코드를 다운로드 받아서 실행시키는 것은 애플 가이드라인을 위반하는 것이 아니므로, 코드 푸시는 허용된다.