배포하는 팀 Capacitor Live Updates Apple 리뷰 이메일에서 언급된 후에도 같은 질문을 계속 묻습니다 원격 code 실행: 그러면 Capgo를 차단하나요?
대부분의 Capacitor 앱에는 해당하지 않습니다. Capgo는 앱이 이미 실행 중인 웹 번들을 교체합니다. Swift, 프레임워크, 바이트코드를 다운로드하지 않으며, 제품을 미니 앱 스토어로 만들지도 않습니다. Apple이 인용한 규정은 실제로 존재하지만, 이는 서명된 JavaScript가 전달되는 경우 WKWebView 또는 JavaScriptCore로 전달되는 경우와는 다른 유형의 동작을 대상으로 합니다.
이 내용은 엔지니어링 가이드일 뿐 법적 조언이 아닙니다. Apple이 공개한 문서를 읽고 앱에 대한 법률 자문을 받으세요.
리뷰어가 인용하는 세 가지 조항
App Review 가이드라인 2.5.2
가이드라인 2.5.2 에 따르면 앱은 “다른 앱을 포함해 앱의 기능이나 동작을 도입하거나 변경하는 code를 다운로드, 설치 또는 실행할 수 없습니다.”라고 명시되어 있습니다.
리뷰 팀은 다음과 같은 경우 그 문구를 적용합니다:
dlopen,dlsym, 또는 이와 유사한 동적 로딩,performSelector:그리고 프라이빗 API를 겨냥한 다른 런타임 훅, 또는- 승인 후 네이티브 동작을 변경하는 것이 목적인 원격 스크립트입니다.
그것은 원격 code 실행 거절 통지서에서 반복되는 패턴입니다. 설치 후 다운로드되는 모든 바이트를 금지하는 것은 아닙니다.
ADPLA 섹션 3.3.1(B) (code 해석)
이 Apple Developer Program 라이선스 계약 섹션을 찾으세요 3.3.1(B) 허용합니다 해석된 code을 다음 조건 충족 시 다운로드하도록 허용합니다:
- 앱의 주된 목적을 변경하지 않고,
- 서명, 샌드박스 또는 기타 OS 보안 기능을 우회하지 않으며,
- 다른 애플리케이션을 위한 스토어나 스토어프론트를 만들지 않는 경우입니다.
Capacitor의 웹 레이어는 설계상 code로 해석됩니다. Capgo 사용자가 App Store에서 검토된 바이너리를 설치한 후 해당 레이어를 교체합니다.
ADPLA 섹션 3.3.1(C) (추가 기능)
섹션 3.3.1(C) 또 다른 가드레일을 추가합니다: Apple의 사전 서면 승인 또는 허용된 3.3.9(A) In-App Purchase 사용 시, 앱은 App Store, Custom App Distribution, TestFlight 이외의 배포 메커니즘을 통해 추가 기능이나 기능을 제공하거나 잠금을 해제하거나 활성화할 수 없습니다.
특정 OTA bundle이 그 선을 넘는지 여부는 팀의 법적 판단 사항입니다. Capgo은 이를 대신 결정하지 않습니다. 컴플라이언스 체크리스트 이름 3.3.1(C)로 각 릴리스를 평가할 수 있습니다.
가이드라인 4.7 및 2025년 11월 명확화
Apple의 2025년 11월 13일 가이드라인 업데이트 명확히 했습니다 가이드라인 4.7 HTML5와 JavaScript를 제공하는 앱에 대해 미니 앱, 미니 게임, 챗봇, 플러그인 및 유사한 소프트웨어 바이너리에 임베드되지 않음.
앱 내에서 사용자가 여러 다른 소프트웨어 경험을 탐색하거나 실행하는 경우, 4.7의 카탈로그, 인덱싱 및 연령 등급 메커니즘이 필요할 수 있습니다. 번들의 소유권은 이 문제를 결정하지 않습니다. 배포하는 경험 플러그인이 처리합니다.
Capgo는 ~을(를) 위한 전달 채널입니다 여러분의 의 번들 여러분의 채널입니다. 그 자체로는 4.7 마켓플레이스가 아닙니다. 제품이 화이트라벨 호스트나 미니 앱 플랫폼이라면, OTA에 의존하기 전에 4.7을 진지하게 고려해야 합니다.
Capgo가 실제로 제공하는 것
| 레이어 | Capgo 동작 |
|---|---|
| 네이티브 바이너리 | 변경 없음. 새 플러그인, 권한, 엔티틀먼트는 스토어 빌드가 필요합니다. |
| 웹 자산 | 서명된 JavaScript, HTML, CSS, 폰트, 이미지 및 정적 파일이 앱 내 번들을 대체합니다. |
| 실행 | Apple이 이미 승인한 셸의 WebView 또는 JavaScriptCore 엔진 내에서 실행됩니다. |
| 암호화 | 선택적 종단 간 암호화로 전송 및 저장 중 Capgo가 bundle 내용을 읽지 못하게 합니다. |
Capgo는 웹 레이어 수정을 몇 분 만에 배포하고, 채널에서 잘못된 bundle을 롤백하며, 네이티브 릴리스를 App Store 경로에 유지하는 데 도움을 줍니다. 수천 개의 프로덕션 앱이 라이브 업데이트를 원격 네이티브 로더로 전환하지 않고 이 분리를 사용합니다.
팀을 위한 실무 규칙
- Apple이 검토한 제품 내부의 버그, UI, 카피, 개선 사항에는 OTA를 사용하세요.
- 네이티브 code, SDK, 권한 또는 entitlements가 변경되면 새 바이너리를 제출하세요.
- 라이브 업데이트를 사용하여 가격 모델을 변경하거나 숨겨진 기능을 잠금 해제하거나 앱의 목적을 전환하지 마세요.
- 요청 시 App Review 노트에 업데이트 작동 방식을 문서화하세요.
- 전체 내용 보기 Apple 원격 code 및 Capgo 다음 릴리스 전에 섹션을 확인하세요.
제품 뷰(채널, 롤백, 서명)가 필요하면 여기에서 시작하세요 Capacitor Live Updates. 정책 심층 분석이 필요하면 위의 컴플라이언스 문서나 이전 워크스루를 사용하세요 Apple은 live updates를 허용하나요?.