인라인 설치 지원 중단 이전 FAQ

2018년 6월 12일부터 인라인 설치가 지원 중단됩니다. 자세한 내용은 Chromium 블로그 게시물을 참고하세요.

타임라인 관련 질문

2018년 6월 12일에 변경되는 사항은 무엇인가요?

2018년 6월 12일 이후에 처음 게시된 확장 프로그램 및 앱과 같은 모든 Chrome 웹 스토어 항목은 인라인 설치가 사용 중지됩니다. '사용 중지됨'은 인라인 설치 시도가 사용자가 설치를 완료할 수 있는 Chrome 웹 스토어의 항목 세부정보 페이지로 자동 리디렉션됨을 의미합니다. 이 날짜 이전에 처음 게시된 스토어의 기존 항목은 변경되지 않습니다.

2018년 9월 12일에 변경되는 사항은 무엇인가요?

사용 중지는 게시 날짜와 관계없이 모든 항목에 적용됩니다. 모든 항목에 대한 인라인 설치 시도가 사용자가 설치를 완료할 수 있는 Chrome 웹 스토어로 리디렉션됩니다.

2018년 9월 12일 이전에 무엇을 해야 하나요?

아무것도 변경할 필요가 없지만 설치 흐름을 검토하고 chrome.webstore.install() 호출을 항목의 Chrome 웹 스토어 등록정보로 직접 이동하는 탐색으로 바꾸는 것이 좋습니다. 이렇게 하면 최상의 사용자 경험을 제공하는지 확인할 수 있습니다.

또한 새로운 Chrome 웹 스토어 다운로드 배지를 사이트의 설치 과정에 포함하는 것이 좋습니다.

M71 (2018년 12월)에서는 무엇이 변경되나요?

M71부터 Chrome은 더 이상 chrome.webstore.install() 메서드를 지원하지 않으며 호출이 실패하여 사이트의 설치 흐름이 손상됩니다. 이때 API를 호출하면 JavaScript TypeError가 발생합니다. 이 날짜 이전에 API 메서드 호출을 모두 삭제해야 합니다.

인라인 설치가 사용 중지된 후

설치 과정은 어떻게 진행되나요?

사이트에서 chrome.webstore.install()를 호출하면 Chrome에서 더 이상 대화상자를 즉시 트리거하지 않고 대신 Chrome 웹 스토어의 세부정보 페이지 (예: https://chrome.google.com/webstore/detail/EXTENSION_ID)로 연결되는 새로운 포그라운드 탭을 엽니다. 여기에서 사용자는 '설치'를 클릭하여 표준 설치 프로세스를 진행할 수 있으며 대화상자에서 사용자에게 권한을 읽고 설치 또는 취소하라는 메시지를 표시합니다. 대화상자를 닫으면 탭이 Chrome 웹 스토어에 유지됩니다.

설치가 완료되었는지 어떻게 알 수 있나요?

chrome.webstore.install()을 호출하면 사용자가 Chrome 웹 스토어로 리디렉션되었다는 오류와 함께 실패 콜백이 트리거됩니다. 설치 성공 여부는 나타내지 않습니다. Chrome 71부터는 chrome.webstore.install() 호출이 실패하므로 errorCallback이 절대 실행되지 않습니다.

이 API가 없어도 사이트는 확장 프로그램과 웹사이트 간에 통신하여 항목이 이미 설치되었는지 감지할 수 있습니다. 이 작업은 확장 프로그램 메시지와 매니페스트의 externally_connectable 속성을 통해 실행할 수 있습니다.

"externally_connectable": {
  "matches": ["https://www.example.com/*"]
}
// JS running on https://example.com
try {
  chrome.runtime.sendMessage('EXTENSION_ID', MESSAGE, function() {
    if (chrome.runtime.lastError) {
      // Extension is not installed.
    }
  });
} catch (e) {
  // Extension is not installed.
}

다음을 바꿉니다.

  • EXTENSION_ID: 확장 프로그램의 ID입니다.
  • MESSAGE: 확장 프로그램에 전송할 메시지 문자열 또는 객체입니다.

설치 후 정보 페이지를 트리거하려면 어떻게 해야 하나요?

설치 후 chrome.runtime 이벤트를 사용하고 새 탭을 엽니다. 다음은 백그라운드 페이지에서 사용할 예입니다.

chrome.runtime.onInstalled.addListener(function listener(details) {
  if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
    chrome.tabs.create({url: "https://www.example.com/"});
    chrome.runtime.onInstalled.removeListener(listener);
  }
});

예외를 적용할 수 있나요?

아니요. 이 정책 변경사항은 예외 없이 Chrome 웹 스토어의 모든 항목에 적용됩니다.