admin / 26.09.2018

Виды мобильных приложений

.

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

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

1. Мобильные приложения развития для бизнеса

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

2. Промо-приложения

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

Стоит лишь немного рассказать о товаре или дать попробовать и «почувствовать» его с помощью приложения, и сразу ЦА может значительно вырасти.

3.

Нативные приложения

Мобильный онлайн-магазин

Статистические данные показывают, что более 15% пользователей совершали покупки, используя мобильные приложения, и примерно такое же количество собирается попробовать. Так что приложение может значительно повысить вашу конкурентоспособность. Покупки через телефон отличаются большим удобством, так как не зависят ни от времени, ни от места, а также дают возможность просмотреть все сделанные заказы и постоянно получать новости о товарах.

4. Развлечения

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

5. Приложения расширенной реальности

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

6. Мобильные новости

Любые медиа и ресурсы новостей теперь можно проверить где и когда угодно.

7. Приложения для социальных сетей

Вы можете создать приложение на основе существующих социальных сетей. Есть множество разных приложений, разработанных для таких социальных медиа, как Twitter, Facebook, Vkontakte и др.

8. Корпоративные приложения

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

Главная / Статьи / Нативная поддержка для устройств ввода в Android своими руками

Многие владельцы Android-устройств сталкивались с тем, что подключаемые по USB устройства ввода, такие как джойстики, клавиатуры, мышки и т.д., не всегда работают, как положено. То кнопки джойстика перепутаны, то медиаклавиши на клавиатуре или мышке не работают и т.п. В моём случае геймпад определялся, как клавиатура, и приходилось использовать программный «костыль», типа USB BT Joystick center или Tincore keymapper. Которые, используя свой IME (метод ввода в Android), позволяют переназначить кнопки. Также использовалась программа PerApp, которая может автоматически переключать IME в зависимости от активного приложения. Данный способ меня раздражал тем, что при включении всего этого хозяйства я не мог пользоваться любимой клавиатурой, а при выключении нельзя было перемещаться джойстиком по интерфейсу системы. Выход я видел только один: сделать нативную поддержку своего геймпада в системе или, грубо говоря, «драйвер».

Первым делом я заглянул в папку /system/usr/keylayout, где обнаружил файлы с очень красноречивыми названиями: Vendor_xxxx_Product_xxxx.kl, где xxxx — это набор цифр и букв. Как уже многие догадались, это не что иное, как идентификаторы устройства (VID и PID). Открыв первый по списку файл в текстовом редакторе, я почти закричал «БИНГО!». Но не закричал, потому что на работе нужно работать, а не джойстики к планшету прикручивать. А увидел я вот что:

# Classic NES Controller

key 289 BUTTON_A

key 290 BUTTON_B

key 297 BUTTON_START

key 296 BUTTON_SELECT

axis 0x00 HAT_X

axis 0x01 HAT_Y

Да-да, это настройки кнопок для джойстика от Nintendo (Денди). Просмотрев соседние файлы, я обнаружил конфиги для различных устройств. В основном игровые контроллеры (Play Station 3, X-box, ASUS gamepad и другие), но есть и клавиатуры.

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

От теории к практике

Инструментарий:

  • устройство на Android 4+ (проверял только на 5.0 и 4.4);
  • поддержка устройством USB OTG;
  • наличие root-доступа;
  • файловый менеджер с поддержкой root (в моём случае это Total Commander);
  • текстовый редактор (в моём случае это опять Total Сommander);
  • лист бумаги и карандаш;
  • USB Device Info (для определения свойств устройства);
  • KeyTest (для отображения кодов кнопок устройства).

1. Создание файла с VID и PID

Подключаем наше устройство ввода и запускаем приложение USB Device Info. Нас интересует вкладка Linux, в которой выбираем своё устройство (у меня оно было последним в списке) и ищем значения строчек Vendor ID и Product ID.

Почему нативные приложения лучше гибридных?

В моём случае это были 0c45 и 7700 соответственно.

Копируем любой файл из /system/usr/keylayout на sdcard и переименовываем его в соответствии с полученными данными, для моего джойстика название получилось таким: Vendor_0c45_Product_7700.kl. (Обратите внимание, что регистр букв имеет значение)

2. Получение кодов кнопок

Запускаем приложение KeyTest и, вооружившись бумагой и карандашом, начинаем поочерёдно нажимать кнопки на устройстве, записывая цифры, высвечивающиеся после scanCode=. Я записывал коды, располагая их на бумаге, как кнопки на геймпаде. Из программы можно выйти только по кнопке «Домой».

3. Маппинг кнопок

Теперь, когда стали известны коды всех клавиш, необходимо прописать их функции. Тут есть два пути:

а) найти среди имеющихся в Android конфигов устройство, максимально приближенное к вашему, и просто изменить в нём коды кнопок, скопировав содержимое в свой файл;

б) прописать все самому.

Я пошёл по второму пути, ибо мой джойстик имеет только крестовину управления и четыре кнопки. Для начала нужно понять синтаксис файла раскладки, он очень прост:

key код_кнопки действие_кнопки

Но тут возник вопрос: а какие действия кнопок писать в конфиге? За много лет использования различных геймпадов на Android я для себя определил, что самый универсальный конфиг — это раскладка от Sony Xperia Play, она одинаково хорошо ведёт себя как в играх, так и в интерфейсе системы.

Ok Google, key mapping for Xperia Play

Key code constant scancode

X 23 KEYCODE_DPAD_CENTER 304

circle 4 KEYCODE_BACK 305

square 99 KEYCODE_BUTTON_X 307

triangle 100 KEYCODE_BUTTON_Y 308

up 19 KEYCODE_DPAD_UP 106

down 20 KEYCODE_DPAD_DOWN 105

left 21 KEYCODE_DPAD_LEFT 103

right 22 KEYCODE_DPAD_RIGHT 108

select 109 KEYCODE_BUTTON_SELECT 314

start 108 KEYCODE_BUTTON_START 28

L trigger 102 KEYCODE_BUTTON_L1 310

R trigger 103 KEYCODE_BUTTON_R1 311

Нас интересует третья колонка, но запись действий в ней немного отличается от тех, что были найдены в системе — это не помеха, просто убираем KEYCODE_.

Прописываю свои кнопки (помните листок с карандашными записями? Самое время найти его…):

key 147 DPAD_CENTER

key 149 BUTTON_B

key 148 BUTTON_Y

key 146 BUTTON_X

key 157 DPAD_DOWN

key 145 DPAD_LEFT

key 155 DPAD_UP

key 156 DPAD_RIGHT

Но и тут не обошлось без нюансов.

У Sony на кнопку «круг» (circle) назначено действие KEYCODE_BACK (привычная нам кнопка «назад»). Несложно догадаться, что нажатие такой кнопки в игре может вызвать нервный срыв. А всё дело в том, что во время игры на Xplay эта кнопка принимает альтернативное значение — KEYCODE_BUTTON_B. Вот её мы и пропишем.

4. Момент истины

Сохраняем наш файл и копируем его в папку /system/usr/keylayout. Выставляем права -rw -r -r (644). Перезагружаем устройство (сам я этого не делал, просто заблокировал и разблокировал, но для чистоты совести и эксперимента обязан был это написать).

Подключаем наше устройство, и если всё сделали правильно, тут же сможете «крестовиной» перемещаться по меню Android. Кнопка, на которую назначили DPAD_CENTER, будет кнопкой выбора, а BUTTON_B — кнопкой «назад».

Итоги

  • на планшете стало на две программы меньше;
  • джойстик теперь реальный Plug and Play;
  • можно играть в игры с маркета без танцев с бубном (если игра поддерживает геймпады);
  • можно перемещаться по интерфейсу Android;
  • свои настройки для каждого устройства;
  • скорость отклика кнопок повысилась (плацебо?).

Полезная информация

Настроить можно не только нажатие, но и смещение по осям (аналоговые контроллеры, мышки).


Назад

iPad, iPhone, Android прочно вошли в жизнь современного человека. Многие уже просто не представляют жизнь без любимого гаджета. Сегодня именно мобильные устройства стали основным способом выхода в интернет. По данным статистики, в крупных российских городах более 50% населения активно пользуется мобильными устройствами. Как повсеместное распространение смартфонов и планшетов должно сказываться на бизнесе?

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

Каковы преимущества мобильных приложений?

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

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

Чем нативное приложение от разработчика отличается от приложения, созданного в конструкторе?

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

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

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

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

Под какую платформу лучше создавать приложение?

Исходя из данных статистики, в России подавляющее большинство гаджетов работают на платформе Android — 70%, доля фанатов Apple составляет — 27%, 3% используют Windows Phone. Проецируя эту статистику на конкретный бизнес, можно понять структуру пользователей в вашем случае.

На сегодняшний день набирает популярность кросс-платформенная разработка, позволяющая получить приложение, созданное для работы и на IOS, и на Android. Создание кросс-утилиты обойдется дороже, чем программы, предназначенной для одной платформы. Однако это будет значительно дешевле, чем создание двух независимых приложений или последующей модификации утилиты, работающей только на одной платформе. Стоимость разработки кросс-платформенных мобильных приложений можно узнать на сайте: http://infoshell.ru/.

Почему нативные приложения лучше гибридных?

С чего вы начинаете своё утро? Раньше люди очень любили за завтраком почитать свежую газету, из которой узнавали о последних новостях, событиях в мире, находили объявления, читали анекдоты. Однако, светлое научно-фантастическое будущее уже наступило, и на смену газетам пришли смартфоны и планшеты, а рубрика анекдотов эволюционировала в целое приложение. Из приложений мы узнаём погоду, курс валют, новости, смотрим, где есть пробки, следим за деятельностью любимых артистов, листаем афиши и так далее. Они прочно вошли в жизнь современного человека. И современный человек частенько берётся разрабатывать их. И нередко бывает так, что он и понятия не имеет о том, что бывают нативные приложения, а бывают гибридные и web-приложения, не ведает он, как их отличить, и какой тип лучше подойдёт концепции его проекта.

О нативных и гибридных приложениях мы сегодня поговорим с Денисом Алтуховым — Android-разработчиком в Anadea.

Привет, Денис!
Привет!

Скажи, как профессионал: чем отличаются нативные приложения от гибридных?
Ну смотри: нативные создаются под конкретную платформу, будь то Android, iOS или Windows. Они пишутся на нативных языках — Java в случае Android и Objective C в случае iOS. Скачиваются исключительно из официальных магазинов.

Вроде PlayMarket?
Да, у нас это PlayMarket и AppStore для Apple. Установка и распространение ведётся через эти магазины. Открывается как отдельное приложение, имеет свои окна.

Что значит нативное приложение?

Не-нативное, написанное на JavaScript — по сути, это приложение, которое открывается в браузере и там имеется какая-то мобильная вёрстка.

По сути, это web-приложение?
Да. И его преимущество в том, что оно кроссплатформенное — пишешь сразу под все платформы, Windows, Android и iPhone или что угодно откроют их. Но здесь накладывается такое ограничение, что ко многим техническим функциям, которые требует заказчик, ты не достучишься. К примеру, он хочет активную работу с камерой — в не-нативном ты этого не сделаешь. Не сделаешь и дизайн по гайдам, которые есть для iOS и Android.

В разных браузерах гибридное приложение может отображаться по-разному?
Оно может «плыть», но глобально всё будет выглядеть одинаково. Но, к примеру, если человек привык использовать Android, то он будет ожидать увидеть некоторые стандартные «андроидовские» штучки. И когда браузерное приложение свёрстано не так, как ты ожидаешь, это уже, говоря откровенно, раздражает.

Все крупные приложения в основном нативные. Почему?
Отсутствие каких бы то ни было ограничений — это основная причина. Ты можешь достучаться до любого функционала, который тебе предоставляет операционная система. Такое приложение более гибкое, намного лучше работает с батареей благодаря правильной архитектуре нативного языка. Сама операционка смотрит на твоё приложение и выстраивает правильную работу с батареей, экраном и так далее. Ту же работу с картами реализовать в гибридном приложении, не используя для этого нативные инструменты от Google и Apple, будет куда сложнее.

Сталкивался с гибридными приложениями в своей практике?
Да. Например, год назад приходил проект, который как раз работал с картами — написан на JavaScript, в особой студии с трудом запускается, сам проект ломаный. Я кое-как смог его запустить лишь на эмуляторе iPhone!

О, Господи!
И это для того, чтобы хоть что-то увидеть! И то, осознать, что там происходит, было довольно трудно. В конце концов, заказчик пришёл к тому, что вместо одного гибридного он заказал два нативных приложения — для iOS и для Android.

То есть, он просто потратил время?
Да. Но его нельзя в этом винить — гибридные приложения разрабатывать и дешевле, и быстрее по времени. Ну и выбор разработчиков куда шире — уже необязателен специалист по мобильным платформам, достаточно обратиться к фронтендеру, который адекватно владеет JavaScript. Зная синтаксис языка, он сможет выполнить заказ, но без глубокого знания платформы многое может упустить и уровень приложения будет низким.

Именно поэтому не-нативные приложения чаще низкого качества?
Да — они «вылетают» или некорректно работают, потому что кто-то пришёл со стороны. Ещё одним проблематичным аспектом «гибридов» является организация нотификаций. Может там эти сервисы как-то и работают, но, к примеру, сейчас мы работаем над социальным приложением для обмена фотографиями, и там в iOS и Android нотификации строятся совсем по-разному. Вот тебе весомое отличие. Как будут выглядеть нотификации в web-приложении на заявленных трёх платформах (iOS, Android, Windows), где у каждой свои индивидуальные особенности… да кто его знает?

А что касается безопасности?
Здесь гибридные тоже проигрывают. Apk-файл ты можешь скачать только из одного места — из магазина. Плюс у тебя есть возможность перед тем как выложить приложение стандартными инструментами всё зашифровать, скрыть реализацию и так далее. Помимо шифрования, используется ещё такая вещь, как proguard — она разбивает ссылки, стирает имена. В не-нативном ничего этого нет, а это значит, что кто угодно сможет его разобрать, украсть твой код, скачать из каких-то других мест.

То есть, сейчас гибридным приложениям до нативных ещё очень и очень далеко?
Разумеется. Смысл в них есть, если ты разрабатываешь что-то очень простенькое, обобщённое, если бюджет невысок и сроки поджимают. Что-то, что не требует всех мощностей устройства, не привязывается к «железу». Если же требуется весь функционал, то в родных операционных системах Google и Apple уже встроена целая гора методов и способов работы с камерой, картами, bluetooth и прочим. И конечно же это будет лучше и качественнее, нежели пере-изобретённый велосипед от каких-то третьих разработчиков.

Абсолютно с тобой согласен. Спасибо, что нашёл время побеседовать!
Всегда пожалуйста.

Подведём итоги нашей беседы с Денисом:

  • если вам требуется высокая скорость работы и ваше приложение будет непосредственно использовать «железо» (камера, оперативная память, видеочип, bluetooth, wi-fi, экран и прочее) устройства — разрабатывайте нативное приложение;
  • если вас интересует высокий уровень безопасности — разрабатывайте нативное приложение;
  • если вы работаете над действительно большим проектом — разрабатывайте нативное приложение;
  • если же вам нужно что-то очень простенькое и вышеперечисленные пункты вашему проекту не нужны — тогда можно обойтись и гибридным приложением.

Mobile

Аналитические исследования в области мобильных разработок показывают, что спрос на создание мобильных приложений для бизнеса стремительно растет. Компаниям мобильные приложения нужны «прямо сейчас», спрос растет и опережает предложение. Дефицит квалифицированных «нативных» специалистов — острая проблема.

Тут и появляется у владельцев бизнеса решение сделать гибридное приложение, ведь его создание требует меньше времени, чем нативное, и стоит оно дешевле, а для его создания достаточно нескольких web-разработчиков. А теперь я буду вам открывать глаза на правду!

Мир сходит с ума!

Компании следуют негативному тренду, чтобы опередить конкурентов, они начинают вкладывать деньги в создание гибридного приложения для своего бизнеса, в работу низкоквалифицированных специалистов области мобильных разработок. К огромному сожалению, это вклад в собственные финансовые потери, и их размер сложно оценить! «Это слова, а где факты?» — возможно, вы подумали сейчас. Будут факты!

Создателю гибридного приложения достаточно знать HTML и JavaScript, чтобы его создать, вы думаете это плюс? Таких «разработчиков» становится все больше и больше, потому что есть спрос. К слову о профессионализме, нативному разработчику требуется не один год для изучения правил работы языков программирования. Через 5 лет непрерывной работы и получения опыта нативного программиста можно назвать профессионалом.

Кому вы доверите проведение операции, врачу-хирургу с 10-летним стажем или студенту второго курса медицинского института? Ответ очевиден.

Успейте сдать билет на Титаник

Проекты клиентов, которые обращаются к нам в студию, мы разделили условно на 3 группы:

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

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

FUCKты

  1. Pocker Face

Организации или группы людей, которые занимаются созданием гибридных приложений, НИКОГДА не расскажут подробно о том, как будет работать приложение.

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

  1. Кроссплатформенностьи адаптивный дизайн

Мы не будем кривить душой, да гибридные приложения кроссплатформенные и дизайн у них адаптивный. Вопрос лишь один: что понимают создатели гибридных приложений под «кроссплатформенностью» и «адаптивностью»?

Кроссплатформенность — способность программного обеспечения функционировать на нескольких операционных системах и (или) платформах.

Адаптивный дизайн — универсальность отображения элементов для всех устройств.

Да, приложение будет работать и на iOS, и на Android, но анимация перехода между экранами будет одинаковой и для пользователей продукции Apple, и для пользователей устройств на Андроиде. Пользователи Apple знают, что вернуться в предыдущей экран они могут только при помощи кнопки «Назад», которая расположена в левой верхней части экрана. Пользователям устройств для Андроид эта кнопка и не нужна, но она, скорее всего будет.

Дизайн в гибридном приложении универсально отображается и на iOS, на Android, универсально — одинаково, как мобильная версия сайта. Зачем создавать интерфейс, который будет путать пользователя, если UI во всем мире стремится к максимальной интуитивности.

Хороший интерфейс — его отсутствие.

Вы спросите: «А что создатели гибридных приложений не могут сделать интерфейс для каждой платформы?». Могут, но разработка и последующая поддержка одного гибридного приложения для двух платформ по стоимости будет почти равны созданию нативных приложений, которые будут работать идеально.

Интерфейс гибридных решений приводит пользователей в недоумение, да они привыкнут к дизайну и анимации в приложении, но что они скажут о скорости его работы?

  1. Скорость работы

Гибридный результат «тормозит», гибридное приложение не может работать со скоростью работы нативного. У недостаточной скорости работы гибридного продукта есть причины.

При каждом запуске приложения верстка: HTML-код и CSS, а также скрипты загружаются с сервера в окно браузера, которое служит экраном гибридного приложения. Например, у вас интернет магазин, значит весь дизайн, весь ассортимент товаров, все данные о товарах, акциях, новинках будут каждый раз заново загружаться на устройство пользователя в окно web-браузера. Создатели гибридных приложений могут использовать функцию накопления данных (кеширование), чтобы повлиять на скорость работы приложения, но пользователи все равно будут видеть задержки в работе приложения.

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

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

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

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

Какие плюсы у гибридных приложений

Плюсами гибридного приложения являются низкая стоимость и скорость создания.

Что важно знать разработчику о приложениях?

Такие решения хорошо подходят для стартапов, когда нужно быстро протестировать бизнес-идею, когда функциональность не так важна.

Мобильные приложения для работающего бизнеса

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

Для работающего бизнеса низкая стоимость гибридного приложения не должна быть определяющим критерием при выборе.

Низкая стоимость и настоящая цена

Допустим, что на создание гибридного приложения вы потратите 40 000 рублей, однако важно знать, что:

  • у гибридных продуктов больше доработок из-за особенностей технологий;
  • доработки и поддержка гибридных продуктов требуют гораздо больше вложений, чем нативных;
  • у гибридных приложений низкая надежность и отсутствие стабильности работы, что обязательно скажется на стабильности работы вашего мобильного бизнеса.

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

Мария Бояринова

Специалист по SEO

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*