앱이 실행되는 방식을 제어합니다.
Launch Handler API를 사용하면 앱이 실행되는 방식(예: 기존 창을 사용하는지 또는 새 창을 사용하는지, 선택한 창이 실행 URL로 이동하는지 여부)을 제어할 수 있습니다. 마찬가지로
File Handing API를 사용하면 시작된 페이지의 window.launchQueue
에 LaunchParams
객체도 추가됩니다.
현재 상태
단계 | 상태 |
---|---|
1. 설명 동영상 만들기 | 완전함 |
2. 사양의 초기 초안 만들기 | 완전함 |
3. 의견 수집 및 디자인 반복 | 완료 |
4. 오리진 트라이얼입니다. | 완료 |
5. 출시 | 완전함 |
Launch Handler API 사용
브라우저 지원
인터페이스
Launch Handler API는 두 가지 새로운 인터페이스를 정의합니다.
LaunchParams
: 소비자가 처리할 targetURL
가 포함된 객체입니다.
LaunchQueue
: 지정된 소비자가 처리할 때까지 큐가 실행됩니다.
launch_handler
매니페스트 멤버
앱의 실행 동작을 선언적으로 지정하려면 launch_handler
매니페스트 멤버를 추가합니다.
추가해야 합니다 client_mode
라는 하위 필드가 하나 있습니다. 새 광고인지 또는 새 광고인지
설정할 수 있는
기존 클라이언트를 시작해야 하고 이 클라이언트를 탐색해야 하는지 여부입니다. 다음 예를 참고하세요.
모든 실행을 항상 새로운
있습니다
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
지정하지 않으면 launch_handler
의 기본값은 {"client_mode": "auto"}
입니다. 이
하위 필드는 다음과 같습니다.
client_mode
:navigate-new
: 실행의 타겟 URL을 로드하기 위해 웹 앱 창에 새 탐색 컨텍스트가 생성됩니다.navigate-existing
: 웹 앱 창에서 가장 최근에 상호작용한 탐색 컨텍스트가 실행의 타겟 URL로 이동합니다.focus-existing
: 웹 앱 창에서 가장 최근에 상호작용한 탐색 컨텍스트가 실행을 처리하도록 선택됩니다.targetURL
이 실행 URL로 설정된 새LaunchParams
객체가 문서의window.launchQueue
에 큐에 추가됩니다.auto
: 플랫폼에 가장 적합한 동작을 결정하는 동작은 사용자 에이전트에 달려 있습니다. 대상 예를 들어 휴대기기는 단일 클라이언트만 지원하고existing-client
를 사용하는 반면 데스크톱 기기는 여러 창을 지원하며 데이터 손실을 방지하기 위해navigate-new
를 사용합니다.
client_mode
속성은 값 목록 (배열)도 허용하며 여기서 첫 번째 유효한 값은
있습니다. 이는 기존 구현과의 하위 호환성을 유지하면서 새 값을 사양에 추가할 수 있도록 하기 위함입니다.
예를 들어 가상의 값 "focus-matching-url"
가 추가된 경우 사이트는 "focus-matching-url"
를 지원하지 않는 이전 브라우저의 동작을 계속 제어하기 위해 "client_mode": ["focus-matching-url", "navigate-existing"]
를 지정합니다.
window.launchQueue 사용
다음 코드에서 extractSongID()
함수는 실행 시 전달된 URL에서 songID
를 추출합니다. 음악 플레이어 PWA에서 노래를 재생하는 데 사용됩니다.
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
데모
PWA Launch Handler 데모에서 Launch Handler API가 작동하는 모습을 확인할 수 있습니다. 애플리케이션의 소스 코드를 확인하여 Launch Handler API를 사용하는 방법을 확인하세요.
- Musicr 2.0 앱을 설치합니다.
- 양식의 채팅 신청서에 링크를 보냅니다.
https://launch-handler.glitch.me?track=https://example.com/music.mp3
오디오 파일을 가리키는 모든 URL(예:https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
)에 대해https://example.com/music.mp3
를 맞춤설정할 수 있습니다. - 채팅 앱에서 링크를 클릭하면 Musicr 2.0에서 트랙을 열고 재생하는 방법을 확인할 수 있습니다.
- 채팅 앱에서 링크를 다시 클릭하면 Musicr 2.0
의견
Chromium팀은 Launch Handler API 사용 경험에 관한 의견을 듣고자 합니다.
API 설계 설명
API에 예상대로 작동하지 않는 부분이 있나요? 아니면 아이디어를 구현하는 데 필요한 메서드나 속성이 누락되어 있나요? 보안에 대한 질문이나 의견이 있으면 무엇인가요? 해당 GitHub 저장소에서 사양 문제를 신고하거나 해결할 수 있습니다.
구현 문제 신고
Chromium 구현에 버그가 있나요? 아니면 구현이 사양과 다른가요?
new.crbug.com에서 버그를 신고합니다. 최대한 자세하게 작성해 주시기 바랍니다.
안내를 따른 다음 구성요소 상자에 Blink>AppManifest
를 입력합니다.
글리치는 빠른 재현을 공유할 때 유용합니다.
API 지원 표시
Launch Handler API를 사용할 계획인가요? 공개적으로 지원하면 Chromium팀이 기능의 우선순위를 정하는 데 도움이 되며 다른 브라우저 공급업체에 기능을 지원하는 것이 얼마나 중요한지 보여줍니다.
#LaunchHandler
해시태그를 사용하여 @ChromiumDev에 트윗을 보내고 사용 중인 위치와 사용 방법을 알려주세요.