본문 바로가기
튜토리얼

Apple Remote Code 규칙 및 Capgo Live Updates

App Review Guideline 2.5.2, ADPLA 3.3.1(B), 그리고 2025년 가이드라인 4.7의 미니앱 명확화는 네이티브 원격 code, 해석된 code 예외, 미니앱 카탈로그를 다룹니다. 앱의 검토된 목적을 유지하고 OS 보안을 준수하며 ADPLA 3.3.1(C)를 지킨다면, Capacitor WebView의 서명된 JavaScript는 여전히 해석된 code로 인정받을 수 있습니다. Capgo가 이 모델에 어떻게 맞는지 알아보세요.

Apple의 원격 code 실행 규칙과 Capgo 라이브 업데이트 Capgo 블로그 일러스트

배포하는 팀 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을 다음 조건 충족 시 다운로드하도록 허용합니다:

  1. 앱의 주된 목적을 변경하지 않고,
  2. 서명, 샌드박스 또는 기타 OS 보안 기능을 우회하지 않으며,
  3. 다른 애플리케이션을 위한 스토어나 스토어프론트를 만들지 않는 경우입니다.

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를 허용하나요?.

Capacitor 앱용 Live updates

웹 레이어 버그가 라이브 상태라면, 앱 스토어 승인을 며칠씩 기다리지 말고 Capgo를 통해 수정 사항을 배포하세요. 네이티브 변경 사항은 정상 리뷰 절차를 그대로 따르는 반면, 사용자는 백그라운드에서 업데이트를 받습니다.

블로그 최신 글

Capgo는 정말 프로페셔널한 모바일 앱을 만드는 데 필요한 최고의 인사이트를 제공합니다.