No Image

Chrome apps что это

СОДЕРЖАНИЕ
381 просмотров
10 марта 2020

Google закрыла ту часть Chrome Web Store, откуда можно было установить приложения для Chrome. Компания поясняет, что их использует всего 1% пользователей Windows, Mac и Linux. Для этих платформ Chrome Apps больше не будут доступны, однако продолжат работать в Chrome OS.

Перемены в Chrome Web Store

Компания Google закрыла ту секцию интернет-магазина Chrome Web Store, в которой размещались приложения Chrome Apps, предназначенные для браузера Chrome. Теперь их можно скачать и установить, только имея прямую ссылку, а в магазине они отныне фигурируют как расширения. Компания начала рассылать электронные письма разработчикам Chrome Apps, в которых уведомляет, что приложения теперь имеют статус «не рекомендованных».

Ранее установленные Chrome Apps все еще работают, однако браузер Chrome потеряет необходимую для этого функциональность уже в первом квартале 2018 г. Изменения коснутся Windows, Mac и Linux, но не Chrome OS, там Chrome Apps продолжат функционировать.

Причины решения

В августе 2016 г. Google сообщила, что поддержка Chrome Apps будет удалена из версий Chrome для Windows, Mac и Linux. В блог-посте компания пояснила причину: приложениями активно пользуется всего 1% пользователей этих трех ОС. Часть Chrome Apps — это просто специальным образом оформленные закладки, что имеет мало смысла на десктопных ОС, отмечает ресурс Ars Technica, однако довольно удобно на Chrome OS, поскольку позволяет привязать закладки к различным частям интерфейса.

Среди Chrome Apps есть и полноценные упакованные приложения, которые могут работать в фоне и имеют доступ, например, к USB-портам устройства. Как и оформленные закладки, они были доступны только на десктопных ПК. Теперь пользоваться ими смогут исключительно пользователи Chrome OS.

Что будет вместо Chrome Apps

В браузере по-прежнему останутся расширения Chrome Extensions, которые также доступны только в десктопной версии, и никуда не собираются исчезать. Установить их можно тоже через Chrome Web Store. Управление расширениями осуществляется с помощью специальных кнопок, расположенных справа от адресной строки. Среди расширений есть менеджеры паролей, блокировщики рекламы, инструменты для проверки почты и даже полнофункциональные приложения вроде Google Hangouts.

Кроме того Google намеревается запустить в десктопной версии еще один тип приложений, так называемые Progressive Web Apps (PWA). У них та же цель, что и у Chrome Apps — добавить веб-сайтам функциональность приложений, такую как полноэкранный интерфейс, собственные иконки, push-уведомления и оффлайн-возможности. Такие приложения уже работают в Chrome для Android, в десктопной версии они должны появиться примерно в середине 2018 г. Свои аналоги PWA развивают многие компании: такие приложения есть для браузеров Samsung, Firefox и Opera на Android.

Команда Google Chrome планирует отказаться от функциональности, которая существовала еще с тех времен, когда браузер был молодой и малопопулярный. Речь идет о возможности устанавливать приложения Chrome Apps из Chrome Web Store.

25 января 2010 года Chrome обновился до стабильной версии 4.0, которая впервые поддерживала браузерные расширения. Причем платформа расширений включала в себя не только, собственно, расширения (удобный способ добавить недостающую функцию в браузер), но и приложения, которые решали уже совсем другую задачу. Приложения открывались в собственных окнах, могли работать в офлайне и были альтернативной сайтам и даже нативным играм.

Читайте также:  Bulk insert ms sql пример

Разработчики из Google активно развивали Chrome Apps поскольку надеялись с их помощью, как минимум, восполнить пробел в операционной системе Chrome OS и собственных устройств серии Chromebook. Вы ведь помните, как Microsoft троллил Хромбуки?

Как максимум, доминирующий на Windows браузер Google Chrome вполне подходил на роль троянского коня, через которого можно было протащить свою платформу приложений на территорию конкурента.

Разработчики получили новые API, доступ ко всей многомиллионной аудитории Хрома и возможность зарабатывать на продаже своих творений. Приложения научились запускаться без запуска браузера. Для них даже создали собственный аналог Пуска (тот самый Chrome Apps Launcher, которого больше нет).

Что из этого вышло, вы и сами знаете. Много ли вы знаете платных приложений для браузера, которые хотели бы купить? Или просто платных приложений? Или просто приложений, которые побеждали бы нативные аналоги? Гуглерам не удалось продать миру свою платформу приложений не только на Windows, но и даже в рамках собственной Chrome OS. Спасать ситуацию теперь будет Google Play, который с этого года доступен на Chromebook. А от балласта надо избавляться.

Начиная с текущего года (точной даты еще нет), новые приложения станут доступны только устройствам на базе Chrome OS. В браузер для других ОС их уже не получится установить. Существующих приложений ограничения не коснутся до второй половины 2017 года. А уже в начале 2018 все пользователи Хрома для сторонних ОС лишатся возможности использовать приложения.

Команда Chromium рекомендует разработчикам приложений мигрировать на Progressive Web App, конвертировать в расширение или создать нативный аналог.

В прошлом топике я постарался рассказать, что такое Chrome app, и зачем их писать. В этом, как обещал, я опишу процесс создания простого Chrome-приложения. В качестве примера будет использован текстовый редактор. Во-первых, его можно написать очень коротко, так чтобы практически весь код поместился в статью. Во-вторых, в текстовом редакторе будут использоваться несколько характерных для Chrome (и других основанных на Chromium браузеров) программных интерфейсов. В-третьих, да, я уже писал текстовый редактор для Chrome.

Подготовка

Для тестирования приложения, которое вы разрабатываете, необходимо будет добавить его в свой браузер. Для этого на странице chrome://extensions нужно отметить чекбокс «Режим разработчика» («Developer mode»). После этого станет возможным добавить ваше расширение или приложение.

manifest.json

Код любого приложения для Chrome, как и любого расширения, начинается с файла manifest.json. В нём описывается вся мета-информация приложения. Приведу целиком манифест редактора:

Разберём поля, которые тут встретились. С названием и описанием всё ясно. Версия является обязательным полем — Chrome Web Store будет требовать, чтобы она менялась, когда вы загружаете обновление вашего приложения.

Стандарные размеры иконок, требующихся для приложения — 48×48 и 128×128 пикселов. Также в некоторых случаях используется иконка размера 16×16. Кроме этого, другие размеры иконки могут потребоваться в случаях, когда она будет показываться на дисплеях высокого разрешения, как на Chromebook Pixel и новых MacbookPro.

Читайте также:  Лучшие влагозащищенные смартфоны 2018

"manifest_version" — версия формата файла manifest. В данный момент следует использовать значение 2.

"offline_enabled" — как можно ожидать, данный флаг установлен для приложений, работающих вне зависимости от наличия доступа к интернету.

Следующая конструкция — главная в файле:

Тут браузеру сообщается, как запускать приложение. В отличие от расширений, для которых background page является необязательным атрибутом, в приложении он всегда есть. Логика работы такова: при запуске приложения сначала загружается код background page. Он может регистрировать обработчики тех или иных событий, в частности, события onLaunched , который затем стартует, когда пользователь тем или иным способом открывает приложение.

В разделе "permissions" описываются настройки доступа для приложения. В нашем случае добавлена возможность сохранять файлы.

Наконец, в разделе "file_handlers" описаны типы файлов, открываемых приложением. Для разных типов файлов в файловом менеджере Chrome OS могут показывать разные строчки в меню. Например, для одних файлов пункт в меню может выглядеть «Смотреть изображение в СуперПрограмме», а для других — «Редактировать текст в СуперПрограмме».

Назначение Chrome-приложения программой для открытия того или иного типа файлов работает пока только в Chrome OS.

Background page

Весь код, реализующий background page находится в файле js/background.js. Вот он:

Background page работает в фоновом режиме независимо от окон приложения. Большую часть времени он не загружен в память. При запуске системы его код исполняется и может установить обработчики тех или иных событий, самое распространённое из которых — onLaunched. Когда обработчики установлены, background page, как правило, выгружается из памяти и запускается обратно только если произошло одно из событий, на которые он подписан.

Когда пользователь кликает на иконку приложения, или открывает в нём какой-то файл, в background page запускается событие onLaunched. В него передаются параметры вызова, в частности, файл(ы), которые приложение должно открыть. Код entryToLoad = launchData[‘items’][0][‘entry’] сохраняет переданный в приложение файл в локальной переменной, откуда его потом возьмёт код редактора. Событие onLaunched может прийти и тогда, когда приложение уже открыто. В этом случае код в background page может сам решить, открывать ли новое окно, или совершить какие-то действия в уже открытом окне.

Метод chrome.app.window.create создаёт новое окно приложения. Первый параметр — путь к открываемому в нём html-файлу (относительно директории приложения). Второй — параметры окна. Остановлюсь на одном из них. frame: ‘chrome’ создаёт окно с обычным для текущей операционной системы оформлением. Другой вариант здесь — frame: ‘none’ . В этом случае приложение запускается в «голом» окне, и разработчик должен будет сам позаботиться о добавлении кнопок для закрытия, свёртывания и развёртывания окна, а также области, за которую окно можно будет таскать по экрану.

index.html

В HTML и CSS файлах, входящих в состав приложений Chrome, нет ничего специфического. Единственная особенность, которую можно отметить — это отсутствие необходимости заботиться о межбраузерной соместимости.

Читайте также:  Hp 1200 мигает желтый индикатор

Мы воспользуемся jQuery, чтобы немного упростить код. Для редактирования мы будем использовать поле

. В настоящем редакторе вместо это будет использоваться более интеллектуальный модуль редактирования. Наиболее распространённые варианты: CodeMirror и Ace.

Для полноты картины приведу CSS:

Основной код: работа с файлами

Так как в нашем примере мы для простоты ограничимся минимальным набором возможностей, то основной код редактора будет посвящён почти исключительно работе с файлами. Для этого используется несколько API, часть из которых уже находится на пути к стандартизации W3C. File API и сопутствующие интерфейсы — большая тема, заслуживающая отдельной статьи. В качестве хорошего введения рекомендую эту статью на html5rocks.com.

Итак, разберём код в js/main.js . Я буду приводить его фрагментами, полный код — на Гитхабе.

Задача функции инициализации — добавить обработчики к кнопкам и получить из background page файл для открытия. Контекст background page получается из основного окна асинхронно с помощью chrome.runtime.getBackgroundPage.

Обработчики нажатий на кнопки:

Текущий FileEntry мы будем хранить в глобальной переменной currentEntry.

Единственная специфичная особенность в приведённом выше коде — это метод chrome.fileSystem.chooseEntry. С помощью этого метода открывается окно выбора файлов (своё на каждой системе). Как и все прочие функции для работы с файловой системой, этот метод асинхронный и получает callback для продолжения работы (в нашем случае функции loadEntry и saveToEntry, описанные ниже).

В функции setTitle() мы меняем заголовок окна, чтобы показать путь к текущему файлу. То, как будет отображаться этот заголовок, зависит от системы. На Chrome OS он вообще не показывается. chrome.fileSystem.getDisplayPath — наиболее корректный способ получить путь файлу, подходящий, чтобы показывать его пользователю. Другое представление пути доступно через entry.fullPath .

В File API есть два различных объекта, описывающих файл: FileEntry и File. Грубо говоря, FileEntry олицетворяет путь к файлу, а File — данные, в нём содержащиеся. Следовательно, для того, чтобы прочитать файл, необходимо по Entry получить объект File. Это достигается с помощью асинхронного метода entry.file() .

FileReader — отдельный объект, предназначеный для чтения файлов. Он позволяет достаточно гибко управлять процессом чтения, но нам от него в данном случае нужно просто прочесть всё содержимое файла.

Запись файла, как и чтение, не содержит специфичного для Chrome кода:

Прежде чем писать данные, их необходимо привести к виду Blob. Один дополнительный шаг, который понадобится нам при записи — это обрезание файла на случай, если он уже существует и имеет большую длину. Если бы мы были точно уверены, что это новый файл, код записи упростился бы до:

Заключение

На этом код нашего приложения закончен. К сожалению, управление файлами в JavaScript устроено несколько неинтуитивно, и, вероятно, является наиболее сложной частью приложения. Но, как я уже писал выше, эти API не специфичны для Chrome, а реализованы во всех современных браузерах.

Комментировать
381 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector