Copyright © 2019-2022 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and permissive document license rules apply.
이 문서는 MiniApp이라는 모바일 애플리케이션을 위한 새로운 형식을 소개하며, 이는 Web 기술에 의존하면서도 네이티브 앱의 기능과도 통합되는 매우 인기 있는 하이브리드 솔루션입니다.
이 절은 이 문서가 공개된 시점의 문서 상태를 설명합니다. 현재 W3C 공개 문서 목록과 이 기술 보고서의 최신 개정판은 W3C 기술 보고서 색인인 https://www.w3.org/TR/에서 확인할 수 있습니다.
이 문서는 MiniApps 워킹 그룹에서 노트 트랙을 사용하여 그룹 초안 노트로 공개했습니다.
그룹 초안 노트는 W3C나 그 회원들의 승인을 받은 것이 아닙니다.
이는 초안 문서이며 언제든지 다른 문서로 업데이트, 대체 또는 폐기될 수 있습니다. 진행 중인 작업 이외의 것으로 이 문서를 인용하는 것은 적절하지 않습니다.
W3C 특허 정책은 이 문서에 대해 어떠한 라이선스 요구사항이나 약속도 수반하지 않습니다.
이 문서는 2021년 11월 2일 W3C 프로세스 문서의 적용을 받습니다.
네이티브 앱은 우리의 일상에서 좋은 반응을 얻고 있지만, 사용자를 위해 더 잘할 수 있는 점이 여전히 많습니다.
사용자가 네이티브 앱에서 서비스를 이용하기 전에는 대개 앱을 다운로드 -> 설치 -> 등록하는 과정을 거쳐야 합니다.
저장 용량의 제약 때문에 사용자는 휴대폰에 제한된 수의 네이티브 앱만 유지할 수 있습니다.
서로 다른 네이티브 앱 간에 데이터를 공유하는 것은 쉽지 않습니다.
네이티브 앱을 개발하기 위해 개발자는 몇 가지 새로운 프로그래밍 언어를 배워야 할 수 있습니다.
네이티브 앱과 동일한 서비스를 제공하기 위해 개발자는 서로 다른 플랫폼용 중복 제품을 유지해야 할 수 있습니다.
Web은 이러한 문제를 피하기에 이상적인 플랫폼이지만, 아직은 매우 불완전합니다.
네이티브와 비교하면 시스템이 제공하는 기능을 활용하기가 쉽지 않습니다.
또한 유사한 네이티브 앱에 실제로 필적하거나 이를 능가할 수 있는 성능의 Web 애플리케이션을 설계하는 것도 보통 어렵습니다.
모바일 기기에서 사용자는 브라우저 밖에서 서비스나 콘텐츠를 자주 이용합니다. 따라서 자연스럽게 모든 애플리케이션이 전체 시스템에서 사용자 계정, 로그인 상태, 사용자 상호작용 면에서 일관되기를 원합니다.
또한 사용자가 어떤 애플리케이션을 정말로 신뢰한다면 일부 데이터를 그 애플리케이션과 공유하고 싶을 때도 있습니다. 하지만 현재 기기의 개인 휴대전화 번호나 연락처 목록처럼 자주 요청되는 몇몇 정보에 대해서는 Web에서 사용자가 권한을 부여할 좋은 방법이 없습니다.
MiniApp은 Web 기술(특히 CSS와 JavaScript)에 의존하고 네이티브 앱의 기능과 통합되는 하이브리드 솔루션인 새로운 모바일 애플리케이션 형식입니다.
슈퍼 앱은 다른 애플리케이션(즉, MiniApp)을 호스팅하고 지원하여 플랫폼의 리소스를 사용해 실행할 수 있게 하는 소프트웨어 플랫폼입니다.
MiniApp은 몇몇 슈퍼 앱에서 사용되면서 인기를 얻었으며, Web과 네이티브 사이의 간극을 메우는 데 도움이 되는 몇 가지 특징을 가지고 탄생했습니다.
MiniApp은 Progressive Web Applications (PWA), 네이티브 앱 또는 Web을 대체하려는 것이 아닙니다.
넓게 보면 이러한 기술 간의 중요한 차이 중 하나는 실행 환경입니다. PWA는 브라우저가 있는 거의 모든 Web 지원 환경에서 실행될 수 있지만, MiniApp은 특정 플랫폼이나 슈퍼 앱에 묶여 있습니다. 또 다른 핵심 차이는 배포 메커니즘으로, MiniApp은 패키징되고 자체 포함되는 반면 PWA의 리소스는 Web 전반에 분산됩니다.
코딩 측면에서 두 기술은 유사한 프로그래밍 및 마크업 언어와 CSS 기반 스타일시트를 사용합니다. MiniApp은 HTML 하위 집합에 기반한 전용 도메인 특화 언어와 데이터 바인딩 및 이벤트 관리를 위한 특정 메커니즘을 구현하며, Virtual DOM 관리를 포함한 MVVM 패러다임을 따릅니다. MiniApp 벤더는 HTML에 항상 직접 대응되는 것은 아닌 유사한 UI(User Interface) 요소를 정의합니다.
서비스 측면에서 PWA와 MiniApp 개발자는 동일한 목적과 동등한 기능을 가진 API에 접근할 수 있지만, 정확히 같은 사양을 따르지는 않습니다.
MiniApp 벤더는 자사 채널을 통한 앱 출시 및 배포 관리를 지향하는 독점 API를 정의합니다. 다른 전용 API는 구체적인 시나리오와 실행 플랫폼에 묶여 있습니다. 예를 들어 기기의 네이티브 알람 및 캘린더 기능을 사용해 알림을 설정하는 서비스, 전화 걸기, 성능 경고 트리거 등이 있습니다. 두 기술은 유사한 API와 서비스를 가지고 있지만 각 애플리케이션 유형의 API 사양 사이에는 상당한 차이가 있습니다. PWA는 표준 Web API에 의존하는 반면, MiniApp은 기기별 기능과 벤더 독점 서비스 같은 플랫폼 기능을 최대한 활용하기 위해 비표준 API를 구현합니다.
구현에 따라 MiniApp 사용자 에이전트는 운영 체제, 슈퍼 앱, 또는 서로 다르고 다양한 렌더링 엔진과 WebView를 기반으로 하는 기타 호스팅 플랫폼일 수 있습니다. MiniApp 사용자 에이전트의 아키텍처는 다음 그림에서 볼 수 있듯이 PWA 사용자 에이전트와 다릅니다.
부록의 비교표는 Progressive Web Applications (PWA)와 다양한 MiniApp 구현 간의 차이를 식별하고 강조합니다. 이러한 차이 중 일부는 다음 표에 요약되어 있습니다.
| 기능 | Progressive Web App | MiniApp |
|---|---|---|
| 소스 코드 | 표준 마크업 언어(HTML), 스타일시트(CSS), 스크립트(JavaScript). | HTML, CSS, JavaScript의 비표준 방언 |
| 배포 형식 | Web 리소스(주로 HTML, CSS, JavaScript 코드 및 WebAssembly 모듈) | ZIP 컨테이너에 패키징된 HTML, CSS, JavaScript 및 기타 리소스. |
| 패키징 | 아니요. Web에 연결된 리소스입니다. | 예. 벤더마다 서로 다른 패키지 형식입니다. |
| Web 서버에 파일을 호스팅해야 함 | 예 | 아니요 |
| 설치 없는 사용 | 예, 브라우저에서 실행됩니다. | 슈퍼 앱 또는 OS에서 실행됩니다. |
| 독립 실행형 아이콘으로 설치 | 브라우저 또는 앱 마켓플레이스에서 가능(선택 사항) | 아니요 |
| 서비스 | Web API에 접근 | 일부 시스템 네이티브 API를 포함한 비표준 Web API에 접근 |
MiniApp 개발자는 HTML/CSS/JavaScript를 프로그래밍 언어로 간단히 사용할 수 있으며, MiniApp은 더 유연하므로 일상 업무에서 복잡한 기능을 빠르게 개발하는 데 뛰어납니다.
이 MiniApp은 AI 기술로 동물을 인식하는 AR 동물원을 만들려고 합니다. 개발자는 네이티브 기능이나 고급 기능(예: 이미지 인식, AR 3D 동물 모델 렌더링, 음성 합성을 위한 음성 API, 지도 SDK가 제공하는 AR 내비게이션)에 접근할 수 있는 몇 가지 컴포넌트나 API를 추가하여 이를 쉽게 수행할 수 있습니다.
MiniApp은 검색 엔진, 검색 엔진, 호스팅된 앱의 MiniApp 스토어 또는 QR 코드로 발견될 수 있습니다.
개발자에게 MiniApp을 개발할 유인은 매우 분명합니다.
| Web | 네이티브 앱 | MiniApp | |
|---|---|---|---|
| 발견 가능성 | 검색 엔진 | 마켓플레이스 | 복수: 검색 엔진 + 호스팅된 앱의 MiniApp 스토어 + QR 코드 |
| 검증됨/신뢰됨 | 아직 탐색 중 | 네이티브 앱 마켓플레이스에 의해 | 호스트 앱 플랫폼에 의해 |
| 배포/다시 로드 | 웹페이지 로드/다시 로드 | 설치/재설치됨 | JavaScript 엔진을 사용하므로 로드/다시 로드 |
| 프로그래밍 언어 | Web 프로그래밍 언어 | 새로운/여러 언어: 최소한 iOS와 Android | Web 프로그래밍 언어 |
| API/컴포넌트(AR, 이미지 인식, 지리 위치, 음성 API) | 매우 기본적 | Web 개발자에게 복잡함 | 매우 단순한 고수준 API와 컴포넌트 |
MiniApp의 목표 중 하나는 서로 다른 플랫폼 간에 정보와 서비스를 연결하는 것이므로, 스마트 자동차, 음성 제어 스피커, 스마트 TV 같은 IoT 애플리케이션에 이상적입니다.
현재 일부 MiniApp을 차량 화면과 시스템에 맞게 변환하는 것이 가능합니다. 또한 몇몇 MiniApp 벤더는 다양한 차량 모델에 애플리케이션을 배포하거나 업그레이드하는 데 도움이 되도록 차량 시스템을 위해 특별히 설계된 MiniApp 플랫폼을 구축했습니다. 이는 수백만 명의 Web 개발자를 자동차 애플리케이션 생태계로 끌어들입니다.
이러한 자동차 MiniApp은 주유, 세차, 전자 통행료 징수, 보험, 식당 예약 또는 엔터테인먼트 등 많은 사용자 시나리오를 제공할 수 있습니다. 예를 들어 시스템이 남은 연료가 20% 미만임을 감지하면 소유자에게 주유 MiniApp을 추천할 수 있습니다. 사용자는 가장 가까운 주유소 정보를 얻고 그곳으로 이동해 MiniApp 안에서의 결제를 포함하여 "차량에서 내리지 않고 주유"를 완료할 수 있습니다.
IoT 기기는 MiniApp을 실행하는 또 다른 매개체가 되고 있습니다. IoT용 MiniApp은 여러 IoT 기기 플랫폼과 운영 체제 전반의 상호운용성을 가능하게 하려는 것입니다. 여러 IoT 기기 플랫폼과 IoT 운영 체제 간의 차이를 다루는 대신, IoT용 MiniApp을 도입함으로써 개발자는 IoT 기기에서의 애플리케이션 개발에만 집중하면 됩니다.
한 가지 예는 화면과 여러 물리 버튼을 갖춘 HVAC(난방, 환기 및 공기 조절) 애플리케이션 스위치 패널입니다. 이 경우 IoT용 MiniApp을 도입함으로써 Web 기술을 사용해 스위치 패널의 화면 UI를 설계하고 개발하여 HVAC 정보를 표시할 수 있습니다. 예를 들어 물리 장치로 입력된 목표 온도 값과 측정된 실시간 온도 값을 표시할 수 있습니다.
또 다른 예는 터치스크린이 있는 스마트 스피커입니다. 이 경우 IoT용 MiniApp을 도입함으로써 스마트 스피커의 터치스크린 UI를 Web 기술로 설계하고 개발하여 음악과 비디오를 재생하고, 가정의 IoT 기기를 제어하며, 온라인 쇼핑을 할 수 있습니다.
사용자 상호작용이 터치스크린에 의존하는 모바일 폰에서 실행되는 MiniApp과 달리, TV에서 실행되는 MiniApp의 사용자 상호작용은 TV 리모컨 패널 키보드와 TV 화면 포커스로 전환됩니다.
TV용 MiniApp을 통해 사용자는 E-commerce MiniApp을 통해 TV에서 상품을 구매할 수 있습니다.
또한 사용자는 Gaming MiniApp을 통해 TV에서 게임을 할 수 있습니다.
MiniApp에서는 일반적으로 뷰 계층이 로직 계층과 분리됩니다.
뷰 계층은 Web 컴포넌트와 네이티브 컴포넌트 표시를 포함해 MiniApp 페이지를 렌더링하는 역할을 하며, 이는 하이브리드 렌더링으로 볼 수 있습니다. 예를 들어 일부 Web 컴포넌트는 WebView에서 지원되지 않거나 성능 제한이 있을 수 있으므로, MiniApp은 지도, 비디오 등과 같은 네이티브 컴포넌트에도 의존합니다.
로직 계층은 JavaScript Workers로 구현됩니다. 워커는 MiniApp의 이벤트 처리, API 호출 및 생명주기 관리를 담당합니다.
확장된 네이티브 기능은 일반적으로 호스팅 네이티브 앱 또는 OS에서 제공되며, 결제, 파일 처리, 이미지 스캔, 전화 통화 등을 포함합니다. 이러한 기능은 특정 API를 통해 호출됩니다. MiniApp이 네이티브 API를 호출하면 JavaScript Bridge를 통해 API 호출을 확장된 네이티브 기능으로 전달하여 추가 처리를 수행합니다. 결과도 JavaScript Bridge를 통해 확장된 네이티브 기능에서 얻습니다.
워커는 각 Render에 대한 연결을 설정하고, 렌더링해야 하는 데이터를 Render에 전달하여 추가 처리를 수행하게 합니다.
MiniApp 페이지의 컴포넌트에 의해 이벤트가 트리거되면, 이 페이지의 Render는 추가 처리를 위해 이벤트를 워커로 보냅니다. 동시에 Render는 MiniApp 페이지를 다시 렌더링하기 위해 워커에서 전송되는 데이터를 기다립니다.
렌더링은 상태가 없는 것으로 볼 수 있으며, 모든 상태는 워커에 저장됩니다.
뷰 계층과 로직 계층을 분리하는 이점은 다음과 같습니다.
MiniApp 플랫폼은 개발자가 멋진 UI를 구축할 수 있도록 많은 컴포넌트를 제공합니다. 여기에는
view, form, image 같은 기본 컴포넌트와 지도 같은
고수준 컴포넌트가 포함됩니다.
MiniApp 벤더는 개발자가 Web 및 네이티브 기능에 모두 접근할 수 있도록 많은 API도 제공합니다. 여기에는 UI 표시 API, 이미지 처리 API와 같은 기본 인터페이스뿐만 아니라 사용자 계정 API, 지도 API, 결제 API 같은 고급 인터페이스도 포함됩니다.
API는 보통 컴포넌트와 함께 작동합니다. 사용자가 MiniApp 페이지에서 특정 컴포넌트를 클릭하면, 관련 API를 호출하여 사용자의 상호작용을 완료하고 필요한 경우 현재 MiniApp 페이지를 새로 고칩니다.
네이티브 앱과 유사한 사용자 경험을 얻기 위해 MiniApp 리소스는 보통 함께 패키징됩니다. MiniApp 패키지를 다운로드하고 설치한 후에는 MiniApp에 필요한 모든 정적 리소스(즉, 페이지 템플릿, CSS, JavaScript 파일 및 기타 문서)가 사용자의 기기에 유지됩니다. 이러한 리소스는 다음 업데이트 전까지 중복 다운로드 없이 항상 사용할 수 있습니다.
MiniApp 패키지는 압축된 ZIP 아카이브이며, 다음을 포함합니다.
검색 및 실행 중 특정 MiniApp을 찾기 위해 MiniApp은 플랫폼에서 패키지 이름이나 식별자를 가져야 합니다. 사용자 인식을 위한 아이콘도 필요합니다.
MiniApp 페이지 외에도 MiniApp은 정보 조각 또는 MiniApp 위젯으로 표시될 수 있습니다. 이 형식에서 개발자는 자신의 서비스 및/또는 콘텐츠를 호스트 환경(예: 어시스턴트, 기기의 전역 검색 등)이라고 하는 다양한 호스트 시나리오에 배치할 수 있습니다. 이 기능은 MiniApp의 서비스와 콘텐츠를 구체적인 시나리오와 연결하여 사용자에게 더 많은 편의를 제공합니다.
예를 들어 사용자가 여행을 위해 기차표를 구매하면, 스마트 어시스턴트의 MiniApp 위젯은 기차의 최신 상태를 즉시 표시합니다. 사용자는 이 위젯을 클릭하여 더 자세한 정보를 볼 수 있는 전체 화면 MiniApp 페이지로 이동할 수 있습니다.
MiniApp 페이지와 마찬가지로 위젯도 URI scheme으로 설명됩니다. 호스트 환경은 URI 경로를 통해 로드할 MiniApp 패키지와 해당 위젯을 지정하고, URI 쿼리 매개변수를 통해 위젯에 데이터를 전달합니다. 위젯이 로드되면 호스트 환경에서 표시되고 렌더링됩니다. 보안과 독립성을 보장하기 위해 호스트와 위젯의 데이터뿐만 아니라 서로 다른 위젯의 데이터도 격리됩니다.
많은 시나리오에서 위젯은 더 복잡한 작업을 위해 MiniApp 페이지를 열 수 있습니다. 이러한 경우 위젯은 종종 해당 MiniApp과 데이터를 공유해야 합니다(예: 일관된 로그인 상태 유지). 따라서 위젯과 MiniApp의 데이터는 양쪽에서 접근할 수 있습니다. 다시 말해 MiniApp 위젯과 페이지는 동일한 데이터 접근 권한을 가집니다.
위젯의 목표 중 하나는 사용자가 전통적인 앱 개념을 잊고 서비스 형태로 사용자의 요구를 실제로 충족하도록 하는 것입니다. 따라서 모든 앱 호출 경로 외에도 위젯은 텍스트 키워드, 음성 분석, 이미지 인식, 코드 스캔, 이벤트 인텐트와 같이 서로 다른 시나리오에서 서로 다른 방법으로 트리거될 수도 있습니다.
참고: 위젯은 중국 시장에서 Quick App으로 구현됩니다.
MiniApp을 발견하고 열고 접근하기 위한 여러 진입점이 있습니다. 여러 WebView에 있는 Web 콘텐츠와 달리 동일한 MiniApp에 대해서는 하나의 인스턴스만 생성되므로, MiniApp은 전역적으로 상태와 데이터를 일관되게 유지합니다. 예를 들어 사용자가 처음으로 QR 코드 진입점을 통해 MiniApp을 열고 로그인한 후에는, 다음에 MiniApp 스토어와 같은 다른 진입점에서 돌아와도 로그인 상태가 유지됩니다.
MiniApp의 진입점에는 다음이 포함되지만 이에 국한되지는 않습니다.
MiniApp은 실제 사용을 통해 효과가 입증된 몇 가지 메커니즘으로 성능과 사용자 경험을 개선하려고 합니다.
MiniApp 생성자를 사용하면 사용자는 MiniApp을 처음 열 때만 패키지를 다운로드하면 되며, 그 후에는 MiniApp의 정적 리소스(예: 페이지, 스크립트, CSS)를 다시 다운로드할 필요가 없으므로 이후 페이지의 로딩과 이동이 더 효율적입니다. 이 기능은 사용자 경험을 개선하고 네트워크 트래픽을 절약합니다.
동시에 MiniApp에는 사전 다운로드 메커니즘이 있어 MiniApp 패키지를 미리 다운로드하거나 첫 페이지에 대해 별도로 사전 다운로드할 수 있으며, 다운로드 중 병렬로 스트리밍 압축 해제를 수행하여 MiniApp 시작 단계의 시간 소모를 최소화하고 처음 열 때 첫 페이지 성능 손실의 균형을 맞춥니다.
MiniApp은 렌더 뷰 간에 네이티브 페이지 스택 관리를 사용하며, 페이지 전환은 네이티브 코드에 의해 구동됩니다. 따라서 페이지의 제스처 조작과 페이지 간 전환은 네이티브와 정확히 동일한 부드러운 경험을 제공할 수 있습니다.
뷰 계층과 로직 계층이 격리되어 있기 때문에 뷰 계층은 독립적으로 렌더링될 수 있습니다. JavaScript 로직 코드에 의해 차단되지 않으므로 페이지의 렌더링 속도를 크게 향상시킬 수 있습니다.
MiniApp의 런타임 환경은 보통 mini-app을 시작하기 전에 사전 구축되므로 MiniApp 시작 시간이 줄어듭니다. 사전 구축 콘텐츠에는 렌더링 뷰, 정적 리소스, 개발자 정의 프리페치 요청, MiniApps 런타임 컨테이너가 포함됩니다. MiniApp이 활성화되면 사전 구축된 렌더링 뷰를 인수한 다음, 다음 사용을 위해 새 렌더 뷰를 캐시 풀에 계속 사전 구축합니다. 렌더 뷰 수에는 제한이 있습니다. 렌더 뷰가 닫히거나 수량 제한을 초과하면 가장 오래 열려 있던 렌더 뷰가 파괴됩니다. MiniApp 애플리케이션이 종료되면 런타임이 파괴되고, 애플리케이션 환경과 리소스는 재사용될 수 있습니다.
MiniApp 플랫폼은 매우 풍부한 컴포넌트와 API를 제공합니다. 이러한 컴포넌트와 API는 보통 개발자의 성능 요구사항을 충족하도록 잘 설계되어 있습니다.
MiniApp의 런타임 환경은 네이티브 코드가 제공하는 기본 기능과 프레임워크라는 두 가지 주요 부분으로 구성되며, 여기에는 개발자 API와 JavaScript로 구현된 일부 컴포넌트가 포함됩니다. JavaScript 프레임워크는 네이티브 앱에 내장되어 있으며 MiniApp을 실행하기 전에 MiniApp 런타임 환경에 미리 로드됩니다. JavaScript 프레임워크는 핫 리로드(사용 중 다시 로드)될 수 있어 성능 개선을 위한 많은 가능성을 제공합니다.
MiniApp 플랫폼은 사용자가 MiniApp에 로그인할 수 있는 다양한 방법을 제공합니다. 사용자가 이미 신원 인증을 통해 플랫폼에 로그인해 있다면 플랫폼의 로그인 정보를 MiniApp과 공유할 수 있으며, MiniApp 자체 계정 시스템과 플랫폼 계정 시스템의 상호운용성을 빠르게 실현하여 MiniApp의 접근 과정을 더 원활하게 만듭니다.
예를 들어 SMS 인증을 사용하는 전통적인 로그인 과정은 더 많은 시간이 걸립니다. 사용자는 먼저 휴대전화 번호를 수동으로 입력한 다음 SMS를 받은 후 인증 코드를 입력해 로그인해야 합니다. MiniApp의 장점은 개발자가 플랫폼이 제공하는 컴포넌트 / API를 사용해 사용자의 휴대전화 번호를 안전하고 편리하게 얻고, 사용자가 자신의 휴대전화 번호로 원클릭 로그인 과정을 승인하도록 유도할 수 있다는 점입니다. 이는 사용자에게 전체 과정을 간단하게 만들고 개발자에게 사용자 정보를 얻는 비용을 줄여 줍니다.
MiniApp 하위 패키징은 MiniApp 패키지 개발 프로세스를 개선하기 위한 빌드 메커니즘입니다. 이는 개발자가 서로 다른 비즈니스 모듈을 서로 다른 하위 패키지로 나누는 데 도움이 됩니다.
개발자 관점에서 MiniApp은 기본적으로 메인 패키지를 가지며, 여기에는 시작 페이지 파일과 공용 리소스가 포함됩니다. 하위 패키지는 개발자의 비즈니스 모듈을 유연하게 나누는 빌드 유형입니다. 사용자는 필요에 따라 서로 다른 하위 패키지를 로드한 후 특정 페이지를 열 수 있습니다.
사용자 관점에서 사용자가 MiniApp을 시작하면 메인 패키지가 기본적으로 다운로드되고, 메인 패키지 안의 페이지가 시작됩니다. 사용자가 하위 패키지 안의 페이지를 열어야 하는 경우 MiniApp Runtime은 하위 패키지를 다운로드하고 로드한 뒤 하위 패키지 페이지를 시작합니다.
이러한 하위 패키지 빌드 메커니즘을 통해 여러 팀이 함께 개발할 때 더 잘 분리하고 협업할 수 있습니다. 사용자가 MiniApps를 사용할 때 하위 패키징 메커니즘은 MiniApp 홈페이지의 로딩 속도를 높이고, 필요에 따라 하위 패키지를 로드하며, 사용자 경험을 최적화할 수 있습니다.
MiniApp에서 애드온/확장은 기존 MiniApp에 특정 기능을 추가하는 캡슐화된 모듈이며, 컴포넌트, JavaScript 모듈 또는 페이지일 수 있습니다. 애드온/확장은 별도로 실행되는 대신 MiniApp 안에서만 실행될 수 있습니다. 개발자는 MiniApp처럼 애드온/확장을 개발하고, 다른 MiniApp이 재사용할 수 있도록 MiniApp 플랫폼에 업로드할 수 있습니다.
MiniApp은 다음을 위해 애드온/확장을 지원합니다.
애드온/확장 메커니즘은 MiniApp 개발의 장벽을 낮추고 더 많은 개발자를 MiniApp 생태계로 데려옵니다.
이 절에서는 현재 주류인 몇몇 MiniApp 또는 관련 플랫폼을 설명합니다.
Alipay Mini Program은 Web과 네이티브의 하이브리드 솔루션인 Alipay 네이티브 앱 위에서 실행됩니다. Alipay Mini Program은 CSS와 JavaScript 같은 Web 기술에 의존합니다. 동시에 결제, 신용 서비스, 얼굴 인증 등 Alipay 네이티브 앱의 기능을 통합합니다.
Alipay 네이티브 앱에서는 100만 개 이상의 Mini Program이 실행되고 있으며, DAU(Daily Active User)는 2억 3천만 명입니다. 사용자 시나리오에는 소매, 교통, 의료 서비스 등이 포함됩니다.
Baidu Smart Mini Program은 Baidu 앱과 기타 파트너 플랫폼을 기반으로 사람들을 정보와 서비스에 지능적으로 연결하는 개방형 생태 제품을 의미합니다. Baidu의 AI 능력과 Smart Mini Program 안의 모든 콘텐츠에 대한 이해를 통해 Baidu는 사용자와 Smart Mini Program을 정확하게 연결합니다. Baidu의 검색 및 정보 흐름 이중 엔진을 통해 사용자는 Smart Mini Program 안에서 앱과 같은 경험을 얻을 수 있습니다. 2019년 7월 기준으로 Smart Mini Program은 150,000개 이상, MAU는 2억 7천만 명입니다.
Baidu Smart Mini Program은 오픈 소스 연합 내에서 오픈 소스로 제공되며, 슈퍼 앱, 모바일 OS, 차량 OS, 음성 제어 스피커 및 TV를 포괄하는 30개 이상의 협력자가 있습니다.
Quick App은 Quick App Alliance의 12개 주요 휴대전화 제조사가 개발한 MiniApp 표준으로, 2억 명 이상의 MAU를 포괄합니다. 개발자는 한 번 개발하여 모든 하드웨어 벤더의 플랫폼에서 실행할 수 있습니다. 운영 체제에 깊이 통합된 Quick Apps는 한 번의 클릭만으로 모바일 폰 시스템의 여러 시나리오에서 얻을 수 있습니다. 네이티브 렌더링 경로를 도입함으로써 프런트엔드 개발과 네이티브 성능 경험의 효과적인 결합이 달성됩니다.
Quick Apps는 네이티브 앱 페이지와 같은 Quick App 페이지 형식과, 장면에서 정보를 표시하는 위젯 형식이라는 두 가지 형태로 실행될 수 있습니다. 둘은 서로 다른 사용자 요구에 맞게 조정되며, 여러 시나리오에서 시스템과 MiniApp을 하나의 전체로 연결합니다.
PC의 MiniApp은 아직 초기 탐색 단계에 있습니다. 360 PC MiniApp은 해당 PC 브라우저에서 실행되는 가벼운 애플리케이션입니다. 전통적인 웹페이지와 비교해 더 많은 기능과 PC 운영 체제와의 더 쉬운 상호작용을 제공합니다.
PC MiniApps는 기업 계정으로 검증된 사용자에게만 제공됩니다. 대부분의 기능은 엄격한 규제를 받으므로 매우 신뢰할 수 있는 Web 콘텐츠로 간주될 수 있습니다.
PWAs는 현대 Web 애플리케이션을 요약하는 최신 용어입니다. 네이티브 앱의 대응물로서 PWA는 네이티브 앱처럼 보이고 느껴지며 기기의 홈 화면/런처/시작 메뉴에 설치될 수 있습니다. 사용자를 다시 참여시키기 위해 푸시 알림을 보낼 수 있고, 오프라인에서도 사용할 수 있으며 열악한 네트워크 조건에서도 동작합니다. 다양한 기능을 가진 기기에서 작동하고, 공개 Web 표준에 의해 정의되는 새로운 기능과 함께 작동하도록 계속 발전하고 있습니다. 사용자는 PWA 앱 안에서 결제할 수 있으며, PWA 앱은 검색 엔진에 친화적이고 하이퍼링크와 완벽하게 작동합니다. PWA는 기술적 측면과 비즈니스 측면에서 성공적입니다 (많은 웹사이트, 특히 소비자 대상 사이트에서 널리 채택됨).
이 절은 몇 가지 대표적인 사용 사례를 선택하고 MiniApps가 Web에서 지원받고자 하는 몇 가지 API를 제안합니다.
MiniApp은 Web 렌더링과 네이티브 렌더링의 하이브리드 솔루션입니다. Web과 네이티브의 렌더링 결과를 결합할 수 있는 좋은 방법이 있다면 매우 유용할 것입니다.
제안: MiniApp은 네이티브 렌더링 결과를 Web 렌더링 결과에 통합하는 데 도움이 되는 표준화된 API가 필요합니다.
MiniApp은 페이지 전환 중 전환 애니메이션을 제공하여 사용자가 네이티브 앱을 사용할 때와 유사한 경험을 얻도록 하고자 하지만, 현재는 이를 수행하는 것이 거의 불가능합니다.
제안: MiniApp은 MiniApp 페이지 전환 중 전환 애니메이션을 추가하기 위한 API가 필요합니다.
MiniApp은 표준화된 배포 형식을 통해 여러 MiniApp 호스팅 플랫폼을 위한 패키지와 파싱 규약을 형성할 수 있습니다. 현재 각 MiniApp 호스팅 플랫폼은 서로 다른 개발 도구(서로 다른 패키징 방법)를 제공하며, MiniApp은 서로 다른 MiniApp 호스팅 환경에서 다르게 파싱됩니다.
제안: MiniApp은 배포 과정에서 실제로 파일들의 패키징된(압축된) 모음입니다. 우리는 통일된 파일 접미사로 MiniApp(.ma)을 설명하고, .ma 파일을 만드는 방법과 .ma 파일을 파싱하는 방법을 지정할 수 있습니다.
Android 위젯이나 Apple 대시보드처럼 사용자는 Web 또는 앱 페이지를 열지 않고도 MiniApp 위젯으로 직접 정보를 얻거나 작업을 완료할 수 있습니다. MiniApp 위젯은 데스크톱이나 대시보드처럼 Web 브라우저 밖의 환경에 표시될 수 있습니다.
제안:
MiniApp은 MiniApp 페이지의 Time to Interactive (TTI)가 언제 완료되었는지 알아야 합니다.
제안: MiniApp 페이지의 Time to Interactive가 완료되었음을 알리는 표준화된 이벤트.
3D 모델은 풍부한 세부 정보 덕분에 점점 더 인기를 얻고 있습니다. AR과 결합하면 2D보다 더 나은 사용자 경험을 제공할 것입니다. 비즈니스 사례에는 온라인 쇼핑, 광고, 교육 등이 포함될 수 있습니다. 그러나 현재 Web에는 3D 모델을 다루기 위한 표준적이고 편리한 방법이 부족합니다. 이 문서에서는 오디오, 비디오, 이미지를 해당 HTML 태그로 처리하는 방식과 유사하게, 3D 모델을 직접 처리하기 위한 HTML 태그를 정의할 것을 제안합니다.
사용자는 제스처를 통해 서로 다른 각도에서 3D 모델을 볼 수 있습니다. 또한 3D 모델은 확대/축소될 수도 있습니다. 전체 화면으로 보거나 웹페이지에 포함되어 다른 HTML 콘텐츠와 함께 표시될 수 있습니다.
사용자는 카메라를 통해 3D 모델을 실제 세계에 배치할 수 있습니다. 사용자는 모델을 배치할 서로 다른 위치를 지정할 수 있습니다.
제안: Web에서 3D 모델을 지정하고 AR과 함께 상호작용형 3D 콘텐츠를 지원하기 위한
<xmodel> 요소.
얼굴 추적은 많은 3D 시나리오에서 사용될 수 있습니다.
제안: 비디오 요소를 입력으로 사용하고 매 프레임 얼굴 추적 출력을 업데이트하는 Face Tracking API. 여기에는 다음이 포함됩니다.
손 제스처는 비디오 효과와 AR/VR 게임 시나리오에서 앱을 더 인상적이고 상호작용적으로 만드는 데 사용될 수 있습니다.
제안: 손 움직임을 추적하고 손의 윤곽을 얻기 위한 고수준 API.
MiniApps에는 Web으로 이전하고 싶은 몇 가지 AR API가 있으며, 이는 게임, 3D 모델 미리보기, 상호작용형 광고에서 더 나은 AR 경험을 제공하는 데 도움이 됩니다.
제안: ARCore와 ARKit을 기반으로 다음을 포함하는 저수준 AR API를 제공합니다.
[MINIAPP-LIFECYCLE]는 MiniApp 생명주기 이벤트와 MiniApp 및 각 페이지의 생명주기를 관리하는 프로세스를 정의합니다. 이 사양을 구현하면 사용자 에이전트가 전역 애플리케이션 생명주기와 페이지 생명주기 모두의 생명주기 이벤트를 관리할 수 있습니다.
2.1.1 뷰 계층과 로직 계층 분리에서 설명한 것처럼, MiniApp에서 뷰 계층은 로직 계층과 분리됩니다. 뷰 계층은 Web 렌더링과 네이티브 렌더링을 포함하여 MiniApp 페이지를 렌더링하는 역할을 하며, 이는 하이브리드 렌더링으로 볼 수 있습니다. 로직 계층은 JavaScript Worker로 구현됩니다. 로직 계층은 MiniApp의 이벤트 처리, API 호출 및 생명주기 관리를 담당합니다.
MiniApp 생명주기 메커니즘은 MiniApp 전역 애플리케이션 생명주기 이벤트와 MiniApp 페이지 생명주기 이벤트를 통해 MiniApp의 뷰 계층과 로직 계층을 관리하는 수단을 제공합니다. MiniApp 전역 애플리케이션 생명주기 상태와 MiniApp 페이지 생명주기 상태에 대한 지식을 가지고 MiniApp을 개발하면 사용자 경험을 개선할 수 있습니다. MiniApp 생명주기는 일련의 이벤트를 포함하며, MiniApp은 이를 통해 자신의 상태에 따라 동작을 변경할 수 있습니다.
[MINIAPP-MANIFEST]는 MiniApps를 설명하기 위한 메타데이터 집합을 정의하는 사양입니다. MiniApp Manifest는 식별, 사람이 읽을 수 있는 설명, 버전 데이터, 스타일링 정보와 같은 MiniApp의 기본 정보를 설정하기 위한 추가 메커니즘을 제공하여 [APPMANIFEST] 및 [MANIFEST-APP-INFO] 사양을 확장합니다. MiniApp manifest는 MiniApp의 일부인 페이지와 위젯의 라우팅도 구성합니다.
MiniApp manifest는 Web App Manifest의 일부 기본 요소를 사용하여 MiniApp(name,
short_name, description, icons)을 설명하고,
MiniApp에 대한 기술적 세부 정보를 지정하기 위한 9개의 보조 멤버(app_id,
version, platform_version, device_type, pages,
req_permissions, widgets)를 추가하며 앱의 모양과 느낌을 구성하는
color_scheme 및 window를 포함하는 JSON 문서입니다.
[MINIAPP-PACKAGING]는 MiniApp 패키지의 의미와 적합성 요구사항, 그리고 페이지 컴포넌트(즉, 템플릿, 스타일시트 및 JavaScript 로직), 매니페스트, 기타 미디어 파일 또는 구성 리소스를 포함하여 MiniApp의 리소스를 담는 컨테이너의 구조를 정의합니다.
이 사양은 MiniApp의 논리적 및 물리적 구조를 결정하며, MiniApp을 패키징하는 ZIP 기반 컨테이너의 파일 시스템 구성과 처리 측면의 요구사항을 담고 있습니다. MiniApp 패키지의 인스턴스는 런타임 환경 또는 MiniApp 사용자 에이전트에서 MiniApp의 배포와 실행을 용이하게 합니다.
[MINIAPP-ADDRESSING]는 MiniApps에 접근하기 위한 표준 MiniApp 프로토콜을 정의하는 노트입니다. 현재 각 MiniApp 벤더가 MiniApp 리소스를 설명하는 고유한 방식을 가지고 있고 MiniApp 패키지를 얻기 위해 매우 다른 방법을 사용하여, 플랫폼 간 MiniApps 접근이 매우 어렵고 사용자와 개발자 관점 모두에서 통일된 이해에 도달하기 어렵다는 문제를 해결하는 것을 목표로 합니다.
이 문서는 모바일 딥 링크 기술을 참조하며, MiniApp에 접근하는 두 가지 방식, 즉 HTTPS 프로토콜을
사용하는 방식과 사용자 정의 프로토콜을 사용하는 방식을 정의합니다. 또한 MiniApp Addressing은
교차 환경 접근을 위한 uri-prefix, MiniApps를 위한 uri-infix "miniapp", 그리고
MiniApp을 고유하게 식별하기 위한 identifier와 version을 포함하는 MiniApp URI의 구문을 정의합니다.
MiniApp Addressing은 사용자 에이전트가 MiniApp URI를 기반으로 해당 mini-app 패키지를 얻는 방법과 일부 오류 처리를 설명하고, 네트워크를 통해 MiniApp 패키지를 다운로드하는 예시 절차를 제공합니다.
MiniApp Widget은 MiniApp Page의 특별한 형태입니다. 페이지와 마찬가지로 위젯은 MiniApp 사용자 에이전트라고 불리는 호스트 환경에서 실행됩니다. MiniApp 페이지와 달리 위젯은 전체 화면이 아니라 특정 영역을 차지할 수 있습니다. [MINIAPP-WIDGET-REQ] 문서는 MiniApp Widget 개발을 위한 초기 설계 고려사항을 설명하며, 여기에는 사용자 에이전트, 패키징, 매니페스트, 주소 지정, 생명주기, UI 컴포넌트, API, MiniApp과 MiniApp Widget 간의 통신 등이 포함됩니다. 자세한 Widget 사양은 별도 문서에서 설명되며, 사용자 에이전트의 세부 기술 요구사항과 기능을 설명할 것입니다. 예를 들어 위젯 실행 환경의 잠재적 의존성, Widget으로 인해 발생하는 API와 UI Components의 잠재적 변경, MiniApp과 MiniApp Widget 간 통신 요구사항과 같은 Widget이 가져오는 새로운 기능 등이 있습니다. 사용자 에이전트 개발자와 위젯 개발자 모두 기술 개발을 위해 Widget 사양을 참조할 수 있습니다.
2021년에 Working Group은 [MINIAPP-MANIFEST]와 [MINIAPP-LIFECYCLE]라는 두 문서를 공개했습니다. 한편 여러
벤더는 일부 사전 표준 구현을 가지고 있습니다. 표준의 실현 가능성을 검증하고 사전 표준 구현과 호환되도록
하기 위해, 워킹 그룹은 MiniApp 표준 Manifest를 Baidu의 App.json 및 HarmonyOS
FA의 config.json과 같은 서로 다른 사전 표준 매니페스트 파일로 변환하는 도구를
개발했습니다. 그리고 2021년 TPAC breakout session에서 워킹 그룹은 이 도구의 데모를 시연했습니다.
표준과 사전 배포가 진행됨에 따라, 워킹 그룹은 Packaging, Addressing, Lifecycle, UI components 및 APIs를 포함할 수 있는 완전하고 표준화된 개발 접근 방식을 지원하도록 도구를 개선할 계획입니다.
MiniApp 컴포넌트는 MiniApp을 구성하는 페이지의 구조, 콘텐츠 및 로직을 정의하는 빌딩 블록입니다. 각 컴포넌트는 기능, 데이터 및 스타일을 캡슐화하여 개발자가 재사용 가능하고 사용자 정의 가능한 항목을 구축할 수 있게 합니다.
MiniApp UI Components 사양은 개발자가 MiniApp 플랫폼 전반에서 동질적이면서도 사용자 정의된 사용자 인터페이스를 구축하는 데 사용할 수 있는 필수 요소 집합을 수집합니다.
이 사양은 HTML과 CSS의 특정 버전을 참조하지 않습니다. HTML 및 CSS 표준 변경사항의 채택과 구현을 보장하기 위해 최신 W3C 권고안을 가리킵니다. MiniApp 사용자 에이전트 벤더와 개발자는 자신의 프로세스와 시스템을 최신 상태로 유지하기 위해 이러한 사양의 변경사항을 추적해야 합니다.
이 사양은 Web Components를 기반으로 모든 MiniApp 사양에서 공통적으로 사용되는 사전 정의된 요소 집합을 정의합니다.
IoT용 MiniApp은 IoT용 MiniApp의 사용 사례를 설명합니다. 이 사양은 사용 사례에서 도출하여 IoT용 MiniApp의 아키텍처를 정의합니다. MiniApp Packaging과 MiniApp Lifecycle을 재사용하고 확장하는 방법이 명시됩니다. 또한 IoT용 MiniApp APIs를 위한 여러 API가 명시됩니다.
IoT용 MiniApp은 휴대폰과 PC에서 실행되는 MiniApps와 유사한 아키텍처를 가지고 있습니다. 하지만 IoT 기기는 서로 다른 하드웨어 기능을 가지므로, IoT용 MiniApp은 다음을 포함한 고유한 기능을 가집니다.
MiniApp은 보안 연결을 지원하기 위해 HTTPS를 활용합니다. 동일한 호스트 환경 안의 여러 MiniApps는 서로 독립적입니다.
MiniApp 내 사용자 상호작용에는 서로 다른 수준의 사용자 권한이 필요합니다.
| 권한 | 사용자 상호작용 |
|---|---|
| 기본값(추가 작업 필요 없음) | 페이지 공유, 클립보드, 진동, 나침반, 모션 센서, 지도, 화면 밝기, 화면 캡처, 배터리 상태 |
| 최초 사용 시 권한 | 지리 위치, 카메라(QR 코드 스캔), 네트워크 상태, Bluetooth, NFC |
| 매번 사용 시 권한 | 연락처, file-apis, 홈 화면에 추가, 사진 선택기, 전화 통화 |
| 토큰으로 검증 | 푸시 |
| 콜백/메시징 | 비밀번호 없는 결제 |
| 비밀번호 요청 | 결제 |
서로 다른 관점과 서로 다른 보안 수준에 따라 MiniApp 프레임워크는 다음 방법을 제공합니다.
개인정보 보호 위험이 높은 기능의 경우 MiniApp은 개발자가 MiniApp 개발자 플랫폼에서 해당 기능 사용 권한을 신청하도록 요구합니다. 신청에는 근거, 사용 시나리오에 대한 자세한 설명, 사용 데모가 포함됩니다. 그런 다음 플랫폼은 MiniApp 사용 요구사항에 따라 신청을 검토합니다. 승인된 MiniApps만 이러한 인터페이스를 호출할 수 있습니다. 예를 들어 사용자의 휴대전화 번호를 얻는 기능은 보안 위험이 높은 기능 중 하나입니다.
MiniApp 패키지는 공개 전에 MiniApp 플랫폼의 검토를 받습니다. 플랫폼은 개발자가 새 버전의 MiniApp을 공개할 수 있는 유일한 경로이므로, 개발자는 MiniApp Platform Operation Terms를 따라야 합니다. 플랫폼 감사에는 데이터 수집, 데이터 사용, 데이터 보안 및 지리적 위치와 같은 여러 측면이 있습니다.
온라인 웹페이지를 렌더링할 수 있는 <web-view> 같은 일부 컨테이너 컴포넌트의 경우,
MiniApp 사용자 에이전트는 해당 컴포넌트가 접근하는 URL을 제한할 수 있습니다. MiniApp Management
Center에 구성된 도메인만 <web-view>에서 접근할 수 있습니다. 또한 컴포넌트가
<iframe>을 포함하는 경우 iframe이 여는 URL도 MiniApp Management
Center에 구성되어야 합니다. 이러한 방식으로 MiniApp 플랫폼은 MiniApp이 여는 동적 페이지에 대해 더
강력한 제어를 가질 수 있습니다.
마찬가지로 MiniApp 프레임워크는 비동기 요청 주소의 적법성을 검증합니다.
예를 들어 request, download, upload 등으로 시작되는 URL의 경우, 해당 도메인은 MiniApp Management Center에 구성된 도메인에 속해야 하며, 데이터 전송의 보안을 보장하기 위해 프로토콜은 HTTPS 프로토콜이어야 합니다.
MiniApp은 중국에서 시작되었지만 전 세계적으로 인기가 높아지고 있습니다. 일본, 한국, 동남아시아, 미국, 유럽, 아프리카를 포함한 세계 다른 지역에서도 유사한 제품 형태가 등장하고 있습니다. MiniApp 기술의 표준화는 전 세계 Web 커뮤니티의 상당한 관심을 끌었습니다. 따라서 MiniApp 표준에 대한 협력은 공동의 국제적 노력이 됩니다.
MiniApp 표준화에 대한 첫 번째 전 세계 Web 커뮤니티 논의는 후쿠오카에서 열린 TPAC 2019 중에 있었습니다. breakout session이 조직되었고, 이 자리에서 MiniApp 벤더들은 MiniApp 기술과 MiniApp 표준의 필요성을 소개했습니다. 참가자들은 패키징, 매니페스트, 생명주기, 위젯과 같은 MiniApp 표준화의 가능한 방향을 논의했습니다. MiniApp 표준과 현재 Web 표준 작업 간의 중복을 피하고 MiniApp 플랫폼과 Web 간, 그리고 서로 다른 MiniApp 플랫폼 간의 상호운용성을 강화하기 위한 특별한 노력이 있었습니다. 이 논의 직후 MiniApps Ecosystem Community Group이 출범했고 MiniApp 사양의 인큐베이션이 시작되었습니다.
가상 TPAC 2020 중에는 행사에서 Mini Apps로부터 배우기라는 제목의 breakout session이 있었습니다. 이 breakout session에서 전문가들은 MiniApp의 추상적 형태와 MiniApps가 가질 수 있는 강력한 기능을 논의했습니다. 또한 세션에서는 다양한 개발 도구를 통해 MiniApp을 구축하는 방법을 공유했습니다. 이후 Web 개발자가 MiniApp과 그 개발자 경험에서 무엇을 배울 수 있는지에 초점을 맞춘 공개 논의가 있었습니다.
아시아 시장의 MiniApp 제품 형태와 기술은 많은 유사점을 공유합니다. 전 세계 커뮤니티, 특히 중국, 일본, 한국 참가자들을 모아 각 지역의 MiniApp 생태계를 중심으로 소통하고 MiniApps 표준화 노력의 미래를 논의하기 위해, W3C MiniApps Working Group과 MiniApps Ecosystem Community Group은 2021년 4월 제1회 MiniApps CJK 회의를 조직했습니다. 30개가 넘는 조직에서 약 90명의 참가자가 논의에 참여해 MiniApp 생태계, 기술 아키텍처, 프레임워크 및 차량용 MiniApp과 같은 새로운 시나리오의 MiniApps에 대한 아이디어를 교환했습니다. 논의의 대략적인 결론은 MiniApps Working Group에서 MiniApp 표준 개발이 잘 진행되고 있으므로 이제 MiniApp 표준의 보안, 개인정보 보호, 접근성 및 국제화에 대한 수평 검토를 시작할 때라는 것입니다. 또한 MiniApp에서 IoT 기술을 활용하는 것은 새로운 시나리오의 MiniApp을 위한 매우 유망한 방향이 될 수 있으며, 관련 표준화 작업에서 전 세계 MiniApp 커뮤니티가 협력할 좋은 기회가 있을 것입니다.
유럽에는 MiniApps 사례가 많지 않지만 이 개념은 점차 주목을 받고 있으며, 커뮤니티는 전통적인 앱 마켓플레이스 밖에서 새로운 비즈니스 모델과 혁신을 찾기 위해 이러한 기술을 탐색하기 시작했습니다.
2021년에 세 W3C 회원을 포함한 이해관계자 그룹은 Quick App Initiative를 출범시켰습니다. 이는 모든 조직과 개인에게 열려 있고 개방형 협력에 의해 추진되는 오픈 소스 지향 관심 그룹입니다. 프랑스에 기반을 둔 독립 비영리 조직인 OW2가 주최하는 이 그룹은 벤더 중립적 관점에서 W3C 작업을 촉진하고, 유럽 시장 관점에서 홍보, 구현 및 표준화 요구사항 수집에 초점을 맞추기 위한 투명한 프로세스에 따라 운영됩니다.
MiniApps의 사용 사례와 요구사항을 충족하고, Web 표준이 MiniApp을 더 잘 지원하도록 하며, 사용자 에이전트의 혁신을 탐색하고 Web을 풍부하게 하기 위해, 우리는 W3C에 그룹을 구성하고 다음 작업을 포함하기를 희망합니다.
자세히는 다음 기술 작업을 추가로 연구해야 합니다.
참고: 현재 MiniApp APIs와 Web APIs 간의 추가 격차는 병행하여 분석될 것입니다.
| 중국어 | 영어 | 정의 |
|---|---|---|
| 小程序 | Mini Program | 네이티브 앱 안에서 실행되는 MiniApp의 한 형식입니다. |
| 快应用 | Quick App | Quick App alliances의 12개 휴대전화 제조사가 개발한 MiniApp 표준입니다. |
| 渲染环境 | rendering view | Native view 또는 WebView입니다. |
| 智能助理(负一屏) | smart assistant | 편의를 위해 서비스를 제공하는 스마트 어시스턴트로, 일반적으로 홈 화면의 왼쪽에 있습니다. |
| 热更新 | hot reload | 기능을 수정하거나 업데이트할 때 재설치할 필요가 없습니다. MiniApps에서는 프레임워크의 일부가 JavaScript로 구현되어 있으므로 MiniApp runtime을 hot reload할 수 있습니다. |
MiniApps, W3C 사양 및 PWAs의 API 비교표를 참조하십시오.
이 문서에 기여한 Guanyu Liu (360), He Du (Xiaomi), Hongguang Dong (Xiaomi), Xiaoqian Wu (W3C), Yi Shen (Baidu), Yefeng Xia (China Mobile)에게 깊이 감사드립니다.
Referenced in: