Файл manifest.webapp является одним из основных файлов, необходимых для работы того или иного приложения. В этом файле содержится полная информация о приложении: имя, версия, описание, расположение иконок, языковые параметры и многое другое. Но самое главное, он содержит список API функций, доступных вашему приложению. Кодировка файла: UTF-8 без BOM.

Файл manifest.webapp должен находиться в корневом каталоге вашего приложения. Структура файла соответствует стандарту JSON. Ниже приведён простейший файл манифеста.

{
  "name": "Simple App",
  "short_name": "Simple App",
  "description": "Your first app",
  "launch_path": "/index.html",
  "version": "0.9.9",
  "icons": {
    "56": "/icons/BodyWeight_56.png",
    "112": "/icons/BodyWeight_112.png"
  },
  
  "developer": {
    "name": "Myself"
  },
  "locales": {
  "en-US": {
    "name": "Body Weight",
    "description": "Your Ideal Body Weight"
  }},
  "default_locale": "en-US",
  "type":"privileged"
}

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

Обязательные поля

name

Название приложения. Максимальная длина составляет 20 символов. Если вы измените название своего приложения после дистрибуции, оно не будет обновлено для существующих установок.

"name": "Hello World"

 

version

Версия приложения. Целые числа, разделённые точкой.

"version": "1.0.1"

 

description

Короткое описание приложения.

"description": "Dancing app"

 

icons

Примечание: одна иконка размером 56х56 пикселей обязательна для всех приложений. Иконка разрешением 112х122 не является обязательной, но желательна для всех приложений.

Путь к иконкам приложений. Иконки должны быть квадратными в формате .png.

"icons": {
"56": "/img/icon_56.png",
"112": "/img/icon_112.jpg"
}

 

developer

Примечание: только поле name является обязательным для всех приложений

  • name: имя разработчика.
  • url: адрес веб-сайта разработчика. Опционально.
"developer": {
"name": "Bagration",
"url": "http://www.site.com"
}

 

locales

Список одного или нескольких языков, для которых есть переведённое название и описание приложения.

"locales": {
"en-US": {
"name": "Simple App",
"description": "Very simple app"
},
"ru-RU": {
"name": "Простое приложение",
"description": "Очень простое приложение"
}
}

 

default_locale

Язык по умолчанию - определяет язык, который вы использовали в значениях полей манифеста вашего приложения. Список языковых кодов (стандарт RFC 4646), используемых в системе KaiOS вы можете посмотреть ниже:

af-ZA Afrikaans
ar-SA عربي
az-Latn-AZ Azərbaycan
be-BY Беларуская
bg-BG Български
bn-IN বাংলা (IN)
bn-BD বাংলা-BD
bs-BA Bosanski
cs-CZ Česky
da-DK Dansk
de-DE Deutsch
el-GR Ελληνικά
en-GB English (GB)
en-US English (US)
es-US Español (US)
et-EE Eesti
es-ES Español (ES)
fa-IR فارسی (IR)
fi-FI Suomi
fil-PH Tagalog
fr-CA French (CA)
fr-FR Français (FR)
he-IL עברית
hi-HI हिन्दी
hr-HR Hrvatski
hu-HU Magyar
hy-AM Հայերեն
id-ID Bahasa Indonesia
is-IS Íslenska
it-IT Italiano
it-LT Lietuvių
ka-GE ქართული
kk-KZ Қазақша
km-KH ភាសាខ្មែរ
lo-LA ລາວ
lv-LV Latviešu
mk-MK Македонски
mo-RO Молдовеняскэ
ms-MY Melayu
nb-NO Norsk (bokmål)
ne-IN नेपाली
nl-NL Nederlands
pl-PL Polski
ps-AF پښتو
pt-BR Português (do Brasil)
pt-PT Português (Europeu)
ro-RO Română
ru-RU Русский
si-LK සිංහල
sk-SK Slovenčina
sl-SI Slovenščina
sq-AL Shqip
sr-Latn-CS Српски/Srpski
sv-SE Svenska
sw-ZA Kiswahili
ta-IN தமிழ்
th-TH ไทย
tr-TR Türkçe
uk-UA Українська
ur-PK اردو
uz-Cyrl-UZ O'zbek
vi-VN Tiếng Việt
xh-ZA isiXhosa
zh-CN 中文 (简体)
zh-HK 中文-HK
zh-TW 中文-TW
zu-ZA isiZulu
as-IN অসমীয়া
und-bod बोड़ो
doi-IN डोगरी
gu-IN ગુજરાતી
kn-IN ಕನ್ನಡ
ks-IN کأشُر
kok-IN कोंकणी
mai-IN मैथिली
ml-IN മലയാളം
mni-IN মণিপুরী
mr-IN मराठी
or-IN ଓଡ଼ିଆ
pa-IN ਪੰਜਾਬੀ
sa-IN संस्कृत
sat-IN ᱥᱟᱱᱛᱟᱞᱤ
sd-IN सिन्धी
te-IN తెలుగు
ko-KR 한국어"

 Например, если ваше приложение использует английский язык, его default_locale будет:

"default_locale": "en-US"

 

type

Примечание: без указания типа privileged приложение невозможно выложить на KaiStore.

Тип приложения, который определяет уровень доступа к API-интерфейсам устройства. Если вы не определили тип, по умолчанию в качестве типа будет использоваться web.

  • web: обычное приложение. Имеет наименьший доступ к API.
  • privileged: привилегированное приложение. Этот тип имеет больший доступ к API, чем web.

Опциональные поля

short_name

Короткое название приложения. Может отличатся от значения поля name.

"short_name": "World"

 

subtitle

Подзаголовок появляются под именем вашего приложения в KaiStore. Подзаголовок - это короткий, яркий и запоминающийся текст, предназначенный для краткого изложения сути вашего приложения. Максимальная длина подзаголовка составляет 40 символов.

"subtitle": "My Best App"

 

bgs

Путь к фоновым изображениям для ваших иконок.

"bgs": {
"56": "/back_56.png",
"112": "/back_112.png"
}

 

launch_path

Путь к запускаемому файлу в вашем приложении.

"launch_path": "/index.html"

 

origin

Примечание: применяется только к привилегированным или сертифицированным упакованным (в формате .zip) приложениям.

Приложения имеют специальный внутренний протокол app://UUID, где UUID - это строка, уникальная для каждого устройства, на котором установлено приложение. Поле orign позволяет заменить значение UUID именем домена, которое будет использоваться каждым установленным приложением.
Примечание: доменное имя должно начинаться с app://, и вы должны быть владельцем указанного вами доменного имени.

Внимание: в настоящее время UUID недоступен.

"origin": "app://mysite.com"

 

permissions

Пользовательские разрешения для API функций, которые необходимы вашему приложению, например, доступ к контактам пользователя. Каждое разрешение требует:

  • name: название разрешения;
  • description: описание причины, по которой вашему приложению нужно использовать это разрешение;
  • access: требуемый уровень доступа. Могут быть: readonly (только чтение), readwrite (чтение и запись), readcreate (чтение и создание) и createonly (только создание).
"permissions": {
"contacts": {
"description": "access to the users сontacts",
"access": "readcreate"
}
}

Примечание: если приложение пытается использовать один из API без соответствующей записи в поле прав доступа, оно не будет работать.

 

fullscreen

Элемент управления, который сообщает среде выполнения, запускать ли приложение в полноэкранном режиме или нет.

"fullscreen": "true"

 

datastores-owned

Примечание. Применяется только к привилегированным/сертифицированным приложениям.

При использовании Data Store API приложение, которому принадлежит хранилище данных, должно иметь поле datastores-owned в своем манифесте, чтобы подтвердить права владения.

"datastores-owned": {
"myData": {
"access": "readwrite",
"description": "my data store"
}
}

 

datastores-access

Примечание. Применяется только к привилегированным/сертифицированным приложениям.

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

"datastores-access": {
"myData": {
"access": "readwrite",
"description": "Read and modify my data store"
}
}

 

messages

Примечание. Применяется только к привилегированным/сертифицированным приложениям.

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

"messages": [
{ "alarm": "/alarm.html" }
{ "notification": "/notify.html" }
{ "telephony-new-call": "/call.html" }
]

 

redirects

Примечание. Применяется только к привилегированным/сертифицированным приложениям.

Внутренние URL-адреса, используемые вашим приложением для обработки внешних процессов.
Например, ваше приложение использует проверку подлинности OAuth Facebook для получения контактов пользователя. Когда аутентификация завершена, сервер перенаправляет запрос обратно на URL-адрес. Поскольку приложение не размещено в Интернете,оно не имеет действительного URL-адреса, на который можно перенаправить. Таким образом, вы используете поле redirects для перенаправления внешнего URL-адреса на внутренний URL-адрес приложения.

"redirects": [
{
"from": "http://facebook.com/authentication/success.html",
"to": "/app/index.html"
}
]

 

activities

Набор веб-действий (activities), которые поддерживает ваше приложение (полный список).

  • Каждое свойство в этом поле является действием.
  • Имена действий записываются в произвольной форме.
  • Каждое действие представлено объектом.
"activities": {
"share": {
"filters": {
"type": [ "image/png", "image/gif" ]
},
"href": "footer.html",
"disposition": "window",
"returnValue": true
}
}

 

precompile

Путь к файлам JavaScript, содержащим код asm.js, который вы хотите скомпилировать во время установки.

Компиляция во время установки увеличивает продолжительность процесса установки, но сокращает время, необходимое для запуска приложения.

"precompile": [
"first.js",
"second.js"
]

 

csp

Это поле можно использовать для определения Политики безопасности контента (CSP), которая применяется ко всем страницам в приложении. Политики, которые вы можете добавить в CSP, перечислены в директивах политик CSP, и для приложения вам необходимо включить их в поле.

"csp" : "default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'"

Политики по умолчанию, применяемые к привилегированным и сертифицированным приложениям KaiOS:

Privileged CSP
default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'

Certified/Internal CSP
default-src *; script-src 'self'; object-src 'none'; style-src 'self'

Значения по умолчанию не могут быть переопределены, только добавлены.

 

orientation

Зафиксировать ориентацию экрана в одним из следующих способов:

  • portrait-primary: обычная портретная;
  • portrait-secondary: перевёрнутая портретная;
  • portrait: портретная, в зависимости от положения телефона (обычная или перевёрнутая);
  • landscape-primary: ландшафтная (телефон на левом боку);
  • landscape-secondary: ландшафтная (телефон на правом боку);
  • landscape: ландшафтная в зависимости от положения телефона (на левом или правом боку).
"orientation": [ "portrait-primary" ]

 

По материалам сайта: Kaiostech

Добавить комментарий

Защитный код
Обновить