확장 프로그램용 Chrome 116의 새로운 기능

Chrome 116이 베타 버전으로 출시되었으며 Chrome 확장 프로그램 개발자를 위한 다양한 업데이트가 포함되어 있습니다. 새로운 기능을 간단히 살펴보겠습니다.

프로그래매틱 방식으로 측면 패널 열기

사이드 패널은 Chrome 확장 프로그램에서 가장 많이 요청된 기능 중 하나였으며 버전 114부터 Chrome에서 사용할 수 있습니다. Side Panel API를 출시한 후 가장 먼저 받은 의견 중 하나는 개발자가 프로그래매틱 방식으로 측면 패널을 여는 방법을 원한다는 것이었습니다. chrome.sidePanel.open가 베타 버전으로 출시되었습니다. 이를 사용하여 컨텍스트 메뉴 클릭과 같은 사용자 상호작용에 대한 응답으로 프로그래매틱 방식으로 확장 프로그램 측면 패널을 열 수 있습니다.

chrome.contextMenus.onClicked.addListener((info, tab) => {
  if (info.menuItemId === 'openSidePanel') {
    // This will open the panel in all the pages on the current window.
    chrome.sidePanel.open({ windowId: tab.windowId });
  }
});

서비스 워커의 WebSocket 지원

WebSocket 지원은 Manifest V3로 이전할 계획인 많은 확장 프로그램에 중요합니다. Chrome 116에서는 모든 WebSocket 활동이 30초 서비스 워커 유휴 타이머를 재설정하므로 서비스 워커의 WebSocket 지원이 더욱 개선됩니다. 즉, WebSocket이 활성 상태인 한 서비스 워커는 계속 실행됩니다.

이를 사용하여 다음 메시지가 도착할 때까지 30초 이상 걸리는 경우에도 서버의 메시지를 기다리는 동안 서비스 워커가 활성 상태를 유지하도록 keepalive 메커니즘을 구현할 수 있습니다.

function keepAlive() {
  const keepAliveIntervalId = setInterval(
    () => {
      if (webSocket) {
        webSocket.send('keepalive');
      } else {
        clearInterval(keepAliveIntervalId);
      }
    },
    // It's important to pick an interval that's shorter than 30s, to
    // avoid that the service worker becomes inactive.
    20 * 1000
  );
}

자세한 내용은 새로운 WebSocket 가이드샘플을 참고하세요.

서비스 워커의 강력한 연결 유지

서비스 작업자 수명 주기에 관해 말하자면, 사용자 상호작용이 필요한 API를 위한 강력한 keepalive라는 또 다른 중요한 업데이트가 있습니다. 사용자 상호작용이 필요한 API에는 확장 프로그램 서비스 작업자에 대한 '강력한' keepalive가 있습니다 (즉, 작업자가 이 작업에 5분 넘게 걸릴 수 있음).

백그라운드에서 오디오 및 동영상 녹화

Manifest V2와 Manifest V3 간의 또 다른 격차가 해소되었습니다. tabCapture 및 오프스크린 문서를 사용하여 백그라운드에서 오디오와 동영상을 녹음할 수 있습니다. 서비스 워커에서 chrome.tabCapture API를 사용하여 사용자 동작 후 스트림 ID를 가져옵니다. 그런 다음 오프스크린 문서에 전달하여 녹화를 시작할 수 있습니다.

업데이트된 tabCapture 가이드에서 작동 방식을 알아보거나 작동하는 예시를 보려면 탭 캡처 - 녹음기 샘플을 참고하세요.

새 API: runtime.getContexts()

runtime.getContexts() API를 사용하면 확장 프로그램과 연결된 활성 컨텍스트에 관한 정보를 가져올 수 있습니다. 예를 들어 활성 상태의 오프스크린 문서가 있는지 확인하는 데 사용할 수 있습니다.

const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
    (c) => c.contextType === 'OFFSCREEN_DOCUMENT'
  );

새로운 오프스크린 이유: GEOLOCATION

geolocation오프스크린 문서를 사용하는 유효한 이유로 추가되었습니다. 위치 정보 사용 가이드를 참고하여 Offscreen API를 사용하여 확장 프로그램의 지리적 위치를 가져오는 방법을 자세히 알아보세요.

chrome.action.setBadgeText()

Manifest V2와 Manifest V3 간의 불일치를 해결하기 위해 action.setBadgeText가 업데이트되었습니다. 빈 문자열 또는 nullaction.setBadgeText에 전달하면 지정된 탭의 배지 텍스트가 지워지고 대신 전역 배지 텍스트가 기본값으로 설정됩니다.

action.setBadgeText({tabId: tabId, text: ''});

요약: Manifest V3로 향한 또 다른 단계

향상된 Service Worker 전체 기간 지원과 업데이트된 TabCapture API를 통해 Manifest V2와 V3 간의 기능 격차를 해소하기 위한 목표를 계속해서 달성해 나가고 있습니다. 알려진 문제 페이지에서 현재 상태를 확인하세요.