확장 프로그램용 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로 이동할 계획인 많은 확장 프로그램에 매우 중요합니다. 모든 WebSocket 활동이 30초 서비스 워커 유휴 타이머를 재설정하므로 Chrome 116에서는 서비스 워커의 WebSocket 지원을 더욱 개선합니다. 즉, WebSocket이 활성 상태인 동안 서비스 워커는 활성 상태로 유지됩니다.

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

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를 위한 강력한 연결 유지입니다. 사용자 상호작용이 필요한 API에는 확장 프로그램 서비스 워커에 대해 '강력한' 연결 유지 기능이 있습니다.즉, worker가 이 작업에 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오프스크린 문서를 사용해야 하는 유효한 이유로 추가되었습니다. 위치정보 사용 가이드에서 오프스크린 API를 사용하여 확장 프로그램의 지리적 위치를 가져오는 방법에 대해 자세히 알아보세요.

chrome.action.setBadgeText()

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

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

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

개선된 서비스 워커 전체 기간 지원과 업데이트된 TabCapture API를 통해 Manifest V2와 V3 간의 기능 격차를 줄이기 위한 목표를 향해 꾸준히 진전을 이루었습니다. 현재 상태는 알려진 문제 페이지에서 확인하세요.