Манифест json, что это за файл

Обновлено: 03.07.2024

Каждая интеграция имеет файл манифеста, в котором указывается основная информация об интеграции. Этот файл хранится как manifest.json в вашем каталоге интеграции. Необходимо добавить такой файл.

Или минимальный пример, который вы можете скопировать в свой проект:

Домен

Домен – это короткое имя, состоящее из символов и символов подчеркивания. Этот домен должен быть уникальным и не может быть изменен. Пример домена для интеграции мобильного приложения: mobile_app. Ключ домена должен соответствовать каталогу, в котором находится этот файл.

Имя интеграции.

Версия

Для основных интеграций это следует опустить.

Для пользовательских интеграций требуется версия интеграции. Версия должна быть допустимой версией, распознаваемой AwesomeVersion, например CalVer или SemVer.

Документация

Отслеживание ошибок

Отслеживание проблем вашей интеграции, где пользователи сообщают о проблемах, если они сталкиваются с ними. Если эта интеграция отправляется для включения в Home Assistant, ее следует опустить. Для встроенных интеграций Home Assistant автоматически создаст правильную ссылку.

Зависимости

Зависимости — это другие интеграции Home Assistant, которые вы хотите, чтобы Home Assistant успешно настроил перед загрузкой интеграции. Это может быть необходимо, если вы хотите предложить функциональность этой другой интеграции, например использовать веб-перехватчики или соединение MQTT.

Встроенные интеграции должны указывать только другие встроенные интеграции в зависимостях. Пользовательские интеграции могут указывать как встроенные, так и пользовательские интеграции в зависимостях .

После зависимостей

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

Встроенные интеграции должны указывать только другие встроенные интеграции в after_dependencies . Пользовательские интеграции могут указывать как встроенные, так и пользовательские интеграции в after_dependencies .

Владельцы кода

Имена пользователей GitHub или названия команд людей, ответственных за эту интеграцию. Вы должны добавить сюда хотя бы свое имя пользователя GitHub, а также всех, кто помогал вам писать код, который включается.

Поток конфигурации

Укажите ключ config_flow, если ваша интеграция имеет поток конфигурации для создания записи конфигурации. Если указано, файл config_flow.py должен существовать в вашей интеграции.

Требования

Требования — это библиотеки или модули Python, которые обычно устанавливаются с помощью pip для вашего компонента. Home Assistant попытается установить требования в подкаталог deps каталога конфигурации Home Assistant, если вы не используете venv, или в что-то вроде path/to/venv/lib/python3.6/site-packages, если вы работаете в виртуальная среда. Это позволит убедиться, что все требования присутствуют при запуске. Если шаги завершатся неудачно, например, отсутствуют пакеты для компиляции модуля или другие ошибки установки, компонент не загрузится.

Требования — это массив строк. Каждая запись представляет собой строку, совместимую с пунктом. Например, платформа Cast для медиаплеера зависит от пакета Python PyChromecast v3.2.0: ["pychromecast==3.2.0"] .

Специальные требования во время разработки и тестирования

Во время разработки компонента может быть полезно протестировать различные версии требования. Это можно сделать в два этапа на примере pychromecast:

Это будет использовать указанную версию и предотвратит попытки Home Assistant заменить ее на то, что указано в требованиях.

Если вам нужно внести изменения в требование для поддержки вашего компонента, также можно установить разрабатываемую версию требования с помощью pip install -e :

Для установки требования также можно использовать общедоступный репозиторий git. Это может быть полезно, например, для проверки изменений зависимости требования до ее публикации в PyPI. В следующем примере будет установлена ​​ветвь exclude_connect библиотеки pycoolmaster непосредственно из GitHub, если в данный момент не установлена ​​версия 0.2.2:

Требования к пользовательской интеграции

Специальная интеграция должна включать только те требования, которые не указаны в файле Core requirements.txt.

Зероконф

Если ваша интеграция поддерживает обнаружение через Zeroconf, вы можете добавить тип в свой манифест.Если у пользователя загружена интеграция zeroconf, он загрузит шаг zeroconf потока конфигурации вашей интеграции, когда он будет обнаружен.

Zeroconf — это список, в котором вы можете указать несколько типов для сопоставления.

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

Если ваша интеграция поддерживает обнаружение через SSDP, вы можете добавить тип в свой манифест. Если у пользователя загружена интеграция ssdp, он загрузит шаг ssdp потока конфигурации вашей интеграции, когда он будет обнаружен. Мы поддерживаем обнаружение SSDP по заголовкам SSDP ST, USN, EXT и Server (имена заголовков в нижнем регистре), а также данным в описании устройства UPnP. Значение манифеста — это список словарей сопоставителей, ваша интеграция будет обнаружена, если все элементы любого из указанных сопоставителей будут найдены в данных SSDP/UPnP. Отфильтровывать дубликаты зависит от вашего потока конфигурации.

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

Домашний комплект

Если ваша интеграция поддерживает обнаружение через HomeKit, вы можете добавить имена поддерживаемых моделей в свой манифест. Если у пользователя загружена интеграция zeroconf, он загрузит шаг homekit потока конфигурации вашей интеграции, когда он будет обнаружен.

Обнаружение HomeKit работает, проверяя, начинается ли обнаруженное имя модели с любого из имен моделей, указанных в manifest.json.

Обнаружение через HomeKit не означает, что вам нужно использовать протокол HomeKit для связи с вашим устройством. Вы можете общаться с устройством любым удобным для вас способом.

Когда информация об обнаружении направляется в вашу интеграцию из-за этой записи в вашем манифесте, информация об обнаружении больше не направляется в интеграции, которые прослушивают тип Zeroconf HomeKit.

Если ваша интеграция поддерживает обнаружение через MQTT, вы можете добавить темы, используемые для обнаружения. Если у пользователя загружена интеграция mqtt, он загрузит шаг mqtt потока конфигурации вашей интеграции, когда он будет обнаружен.

Обнаружение MQTT работает путем подписки на темы MQTT, указанные в файле manifest.json.

Если ваша интеграция поддерживает обнаружение через DHCP, вы можете добавить тип в свой манифест. Если у пользователя загружена интеграция dhcp, он загрузит шаг dhcp потока конфигурации вашей интеграции, когда он будет обнаружен. Мы поддерживаем пассивное прослушивание обнаружения DHCP по имени хоста и OUI или сопоставление MAC-адреса реестра устройств, когда для параметра register_devices установлено значение true . Значение манифеста — это список словарей сопоставителей, ваша интеграция будет обнаружена, если все элементы любого из указанных сопоставителей будут найдены в данных DHCP. Отфильтровывать дубликаты зависит от вашего потока конфигурации.

Если интеграции требуется получать потоки обнаружения для обновления IP-адреса устройства, когда оно подключается к сети, но совпадение имени хоста или oui будет слишком широким, и оно зарегистрировано в реестре устройств с MAC-адресом с помощью CONNECTION_NETWORK_MAC , он должен добавить запись DHCP с параметром register_devices равным true .

Если интеграция поддерживает zeroconf или ssdp , их следует предпочесть dhcp, поскольку они обычно обеспечивают лучший пользовательский интерфейс.

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

  • Если бы имя хоста было Rachio-XYZ, а MAC-адрес был бы 00:9D:6B:55:12:AA , обнаружение произошло бы.
  • Если бы имя хоста было Rachio-XYZ, а MAC-адрес был 00:00:00:55:12:AA , обнаружение не произошло бы.
  • Если бы имя хоста было NotRachio-XYZ, а MAC-адрес был 00:9D:6B:55:12:AA , обнаружение не произошло бы.

Пример с установкой для параметра register_devices значения true :

Если ваша интеграция поддерживает обнаружение через USB, вы можете добавить тип в свой манифест. Если у пользователя загружена интеграция USB, он загрузит шаг usb потока конфигурации вашей интеграции, когда он будет обнаружен. Мы поддерживаем обнаружение по VID (идентификатор поставщика), PID (идентификатор устройства), серийному номеру, производителю и описанию путем извлечения этих значений из дескриптора USB. Справку по определению этих значений см. в разделе Как идентифицировать устройство. Значение манифеста — это список словарей сопоставления. Ваша интеграция будет обнаружена, если все элементы любого из указанных сопоставителей будут найдены в данных USB. Отфильтровывать дубликаты зависит от вашего потока конфигурации.

Некоторые комбинации VID и PID используются многими несвязанными устройствами. Например, VID 10C4 и PID EA60 соответствуют любому чипу USB-Serial моста CP2102 Silicon Labs. При сопоставлении устройств такого типа важно совпадать по описанию или другому идентификатору, чтобы избежать неожиданного обнаружения.

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

  • Если бы видео было AAAA, а pid — AAAA , обнаружение произошло бы.
  • Если бы видео было AAAA, а pid — FFFF , обнаружение не произошло бы.
  • Если бы видео было CCCC, а pid — AAAA , обнаружение не произошло бы.
  • Если vid — 1234 , pid — ABCD , серийный номер — 12345678 , производитель — Midway USB , а описание — Zigbee Stick версии 12 , обнаружение произойдет.

Шкала качества интеграции

Шкала качества интеграции оценивает интеграцию по качеству кода и пользовательскому опыту. Каждый уровень шкалы качества состоит из списка требований. Если интеграция соответствует всем требованиям, считается, что она достигла этого уровня.

Если ваша интеграция не имеет оценки, не добавляйте ее в манифест вашей интеграции. Однако обязательно ознакомьтесь со списком требований шкалы качества интеграции. Это помогает значительно улучшить код и удобство работы пользователей.

Manifest.json – это простой файл JSON на вашем веб-сайте, который сообщает браузеру о вашем веб-сайте на мобильном устройстве или компьютере пользователя. Для Chrome требуется манифест, чтобы отображалось приглашение "Добавить на главный экран".

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

Файл manifest.json содержит информацию об имени приложения вашего веб-сайта, значках, которые оно должно использовать, start_url, с которого оно должно начинаться при запуске, и многие другие сведения.

Примечание: W3C упоминает файл manifest.webmanifest вместо manifest.json, но фактическое имя совершенно не имеет значения, если вы передаете его с помощью application/json . Тем не менее, файл manifest.json с гораздо большей вероятностью будет обслуживаться с правильным типом MIME.

Вы можете добавить приведенный ниже код, если ваш файл манифеста имеет имя manifest.webmanifest.


Сначала проверьте, применяется ли manifest.json в браузере. Для этого откройте окно разработчика, нажав клавишу F12. На вкладке «Приложение» нажмите «Манифест» и посмотрите, отображает ли он установленную вами информацию.

Пояснение

Давайте обсудим некоторые наиболее часто используемые параметры в файле manifest.json.

"short_name": "HackTheStuff",
"name": "Платформа для ведения блогов HackTheStuff",

"short_name" — это очень короткое имя вашего веб-приложения, которое отображается на главном экране или в меню. "имя" – это более широкое имя и псевдоним вашего веб-приложения, который может быть полезен при поиске пользователем в панели поиска телефона или рабочего стола.

"icons": [
"src": "/images/icons-128.jpg",
"type": "image/png",
"sizes": " 128 x 128 дюймов
>
],

"Значки" — это логотип вашего приложения, который будет отображаться на главном экране или в меню. Это json-массив объектов значков. Каждый объект содержит свойство src, размеры и тип. Вы можете добавить свой логотип разного размера и добавить их в файл manifest.json во вложенном объекте. Он автоматически добавит адаптивный размер значка к разным размерам дисплеев.

"start_url": "/index.html",

"start_url" – это корневой URL вашего веб-приложения, который всегда будет открываться первым.

"дисплей": "автономный",

"display" расскажет, как отображать веб-сайт в браузере. Возможные варианты: полноэкранный режим, минимальный интерфейс, автономный режим или браузер. «автономный» будет отображаться как обычно в строке состояния, а «полноэкранный» будет отображаться в полноэкранном режиме.

"ориентация": "пейзаж"

"ориентация" установит ориентацию вашего приложения по умолчанию при открытии.

"область": "/приложение/",

"scope" управляет URL-адресами, по которым можно перемещаться по всем точкам входа и выхода в вашем веб-приложении. Если пользователь открывает то, что выходит за рамки, то оно открывается на обычной веб-странице во вкладке/окне браузера.

В этой записи блога мы собираемся изучить манифест веб-приложения — пример файла manifest.json с учебными пособиями.

Вы можете проверить мой другой пост на nodejs

манифест веб-приложения — файл manifest.json

Манифест веб-приложения – это файл JSON, содержащий метаданные веб-приложения. Он сообщает браузеру, как должен выглядеть пользовательский интерфейс, когда приложение установлено на мобильном или настольном устройстве.

manifest.json также называется manifest.webmanifest. Это также можно использовать в прогрессивных веб-приложениях, которые выглядят как нативные приложения.

В таких браузерах, как Chrome, файл манифеста необходим для включения функции добавления на главный экран

  • Веб-приложения или рабочий стол
  • Мобильные приложения
  • Прогрессивные веб-приложения PWA
  • Приложения Chrome Extension
  • Файрфокс
  • Хром
  • Сафари
  • Приложения для Android
  • Приложения iOS

Манифест.json содержит ключи и значения как для основной, так и для дополнительной информации, такой как имя, значки и начальный URL-адрес.

перечислите все свойства в JSON-файле манифеста

  • имя: – имя приложения, которое отображает значение на главном экране пользователя.
  • short_name: - более короткое имя приложения. Это будет отображаться во время установки функции добавления на главный экран.
  • значки — это значки, которые будут использоваться при установке приложения, при добавлении на главный экран, заставке. Здесь будет содержаться набор изображений, которые будут отображаться, когда пользователь добавляет веб-сайт на главный экран.
  • start_url Это будет URL-адрес по умолчанию при запуске приложения. Целевая страница запуска приложения
  • theme_color: это цвет панели инструментов приложения. background_color определяет цвет экрана-заставки.
  • Отображение – указывает, как приложение будет отображаться при запуске. Возможные значения – полноэкранный режим, автономный режим, минимальный интерфейс, браузер. Ориентация – режим ориентации приложения — альбомная или портретная.

скачать пример файла manifest.json

Вот образец файла manifest.json или manifest.webmanifest.

Как включить JSON-файл манифеста в веб-приложение

Мы можем включить файл manifest.json в заголовок, используя тег ссылки веб-страницы HTML. Это сообщает браузеру о manifest.json.

Атрибут href содержит путь к файлу.

обычно файл manifest.json или manifest.webmanifest находится в корне приложения

Вы также можете включить manifest.webmanifest

  • Информация о метаданных приложения, такая как имя, значки, start_url и т. д.
  • Добавить на главный экран
  • Подробности экрана-заставки
  • Информация о приглашении к установке приложения. Рекомендации по конфиденциальности и содержимому. Сведения о разрешениях.
  • События установки и удаления
  • Отображение и ориентация приложения Детали конфигурации

Заключение

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

В файле manifest.json указано, как запускать ваше приложение. При желании вы можете указать версию среды выполнения и другие параметры.

majorVersion — (необязательно) основная версия среды выполнения. У каждого языка своя система нумерации.

Для Java SE используйте 7 , 8 , 9 или 10 .

Для Java EE используйте 7 .

Для Node.js используйте 0,10 , 0,12 , 4 , 6 или 8 .

Для PHP используйте 5.6 , 7.0 или 7.1 .

Для Python используйте 2.7.13 , 3.6.0 , 3.6.1 .

Для Ruby используйте 2.3.4 , 2.4.1 .

Для Go используйте 1.7.6 , 1.8.3 .

type — (необязательно) определяет, является ли приложение общедоступным или частным:

web (по умолчанию) — общедоступное приложение, доступ к которому можно получить с помощью общедоступного URL-адреса, общедоступного REST API или интерфейса командной строки.

worker — указывает рабочее приложение, которое является частным и работает в фоновом режиме. В некоторых случаях для параметра isClustered должно быть установлено значение true. См. Рабочие приложения.

command — (обязательный параметр, кроме Java EE и PHP). Команда запуска, которая будет выполняться после загрузки приложения.

Большинству приложений PHP не требуется команда запуска. Если в URL-адресе приложения не указан другой файл, первым открывается индексный файл, независимо от того, имеет ли он расширение .htm , .html или .php . См. раздел Выбор команды запуска.

startupTime — (необязательно) максимальное время ожидания запуска приложения в секундах. Допустимые значения — от 10 до 600. Значение по умолчанию — 30. Если приложение не запускается в указанное время, считается, что приложение не запустилось и закрывается. Например, если запуск вашего приложения занимает две минуты, установите для параметра startupTime значение не менее 120.

shutdownTime – (необязательно) максимальное время ожидания остановки приложения в секундах. Допустимые значения находятся в диапазоне от 0 до 600. Значение по умолчанию — 0. Это позволяет приложению корректно закрывать соединения и освобождать ресурсы. Например, если для завершения работы вашего приложения требуется две минуты, задайте для параметра shutdownTime значение не менее 120.

build — значение сборки, указанное пользователем.

commit — указанное пользователем значение фиксации.

версия — указанная пользователем версия приложения.

примечания — (необязательно) комментарии.

mode — (необязательно) режим перезапуска для экземпляров приложения при перезапуске приложения. Единственная разрешенная опция — прокатка для непрерывного перезапуска. Опустите этот параметр, чтобы получить запрос на последовательный или параллельный перезапуск. См. Остановка, запуск и перезапуск приложения в разделе Использование Oracle Application Container Cloud Service.

isClustered — (необязательно) должно быть установлено значение true, чтобы экземпляры приложения действовали как кластер с возможностью аварийного переключения.См. раздел Подготовка кластерного приложения к развертыванию.

home — (необязательно) корень контекста приложения. Значение параметра home добавляется к URL-адресу приложения.

URL-адресом по умолчанию, используемым для проверки работоспособности, является корень приложения. Если для http-endpoint не задано значение, система будет использовать корень приложения для проверки работоспособности. URL-адрес корневого приложения должен возвращать 200 ОК, чтобы приложение считалось "работоспособным" функцией проверки работоспособности.

Читайте также: