Часто задаваемые вопросы по миграции с устаревшей встроенной установкой

С 12.06.2018 встроенная установка устарела. Для получения дополнительной информации прочитайте нашу публикацию в блоге Chromium .

Вопросы о сроках

Что изменится 12.06.2018?

Для любого элемента Интернет-магазина Chrome, например расширений и приложений, впервые опубликованных 12 июня 2018 г. или позже, встроенная установка будет отключена. «Отключено» означает, что попытки встроенной установки будут автоматически перенаправляться на страницу сведений об элементе в Интернет-магазине Chrome, где пользователь сможет завершить установку. Ничего не изменится для существующих в магазине товаров, впервые опубликованных до этой даты.

Что изменится 12 сентября 2018 г.?

Отключение будет применяться ко ВСЕМ элементам независимо от даты публикации. 100 % попыток встроенной установки всех элементов будут перенаправляться в Интернет-магазин Chrome, где пользователи смогут завершить установку.

Что мне нужно сделать до 12 сентября 2018 г.?

Вам не нужно ничего менять, но мы предлагаем вам просмотреть процесс установки и заменить вызов chrome.webstore.install() переходом непосредственно к списку вашего продукта в Интернет-магазине Chrome. Сделав это сейчас, вы сможете убедиться, что это обеспечивает наилучшее взаимодействие с пользователем.

Мы также рекомендуем вам включить новый значок загрузки из Интернет-магазина Chrome в процесс установки на вашем сайте.

Что изменится в M71 (декабрь 2018 г.)?

Начиная с версии 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() , errorCallback запускается с ошибкой, сообщающей, что пользователь был перенаправлен в Интернет-магазин 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 : идентификатор вашего расширения.
  • 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.