Я разработчик мобильных приложений, который потратил много времени на рассмотрение этой проблемы.
Почему ты справшиваешь?
Скорее всего, вы надеетесь сократить расходы на разработку приложений за счет:
- Использование существующих навыков разработки HTML5 / Javascript
- Ориентация на несколько платформ без написания нескольких приложений с нуля
- Не нужно поддерживать несколько кодовых баз в будущем
Причины могут также включать:
- Разработка HTML5 / Javascript воспринимается как «более легкая», чем разработка нативной платформы
- Избегать оплаты регистрационных сборов разработчиков
- Как избежать ограничений контента в AppStore (азартные игры и т. Д.)
- Избегать покупки аппаратного обеспечения разработки (например, Mac для разработки iPhone)
Определения
Давайте точно установим, что мы подразумеваем под каждым из трех упомянутых подходов:
Собственное
Приложение, которое устанавливается на устройство, обычно из его магазина приложений (хотя иногда может быть загружено). В целях этого обсуждения пользовательский интерфейс собственного приложения обычно не состоит только из полноэкранного веб-просмотра.
Мобильный Интернет
На самом деле это может быть любая веб-страница, однако для этого обсуждения давайте рассмотрим одностраничное веб-приложение, которое пытается имитировать внешний вид нативного приложения. Это не нативное приложение, оно запускается в браузере устройства.
Гибридное
гибридное instanceof
приложение.
Большинство людей, вероятно, понимают гибридное приложение как одностраничное мобильное веб-приложение (опять же, наиболее вероятно, имитирующее внешний вид нативного приложения), но упакованное как нативное приложение с доступом к нативным службам (как Phonegap).
Однако на самом деле между моделью Phonegap и полностью нативной есть спектр, о котором я расскажу позже.
Мобильная сеть
Технические ограничения
Давайте сначала перечислим некоторые технические ограничения для мобильных веб-приложений, которые сами по себе могут нарушить условия сделки в зависимости от того, что вы делаете:
- Только пользовательский интерфейс HTML / canvas
- Нет доступа к определенным событиям и службам устройства (они широко задокументированы)
- Не могут быть перечислены в магазинах приложений (влияет на обнаружение)
- Может отображаться в полноэкранном режиме и иметь значок рабочего стола на iOS, однако это необычный и незнакомый опыт для большинства пользователей.
Если вы можете справиться со всем вышеперечисленным, то читайте дальше о проблемах одностраничных веб-приложений в собственном стиле. Однако этот раздел не будет полным без ссылки на приложение FT.
Financial Times веб - приложение FT является известным примером этого стиля приложения. Вот интересная особенность из британской газеты Guardian об этом.
Это, безусловно, замечательный инженерный подвиг. Обратите внимание, что в настоящее время он по-прежнему доступен только для iOS - это говорит мне о том, что они считают, что решение сложных задач кросс-браузерной разработки действительно очень сложно.
Одностраничные веб-приложения в собственном стиле
Этот раздел относится как к мобильным сетям, так и к приложениям в стиле PhoneGap.
Внешний вид и стиль внутри веб-приложения обычно достигается с помощью такой инфраструктуры, как Sencha Touch, которая предоставляет набор компонентов пользовательского интерфейса для использования.
Такие рамки хороши для очень простых пользовательских интерфейсов. Однако им не хватает гибкости. Вы не сможете реализовать какой-либо собственный дизайн приложения с помощью Sencha, вам нужно будет адаптировать свой дизайн к возможностям фреймворка.
Основным способом, которым страдают эти платформы, является попытка эмулировать собственные тонкости пользовательского интерфейса платформы. Этот приятный небольшой эффект, который вы получаете, прокручивая до конца список на iPhone? Ваша структура должна эмулировать это в Javascript. Невозможно воссоздать его полностью, оно будет склонно к замедлению, и ваши пользователи будут застревать в «сверхъестественной долине» приложения, которое выглядит как родное, но явно нет, и нетехническое пользователь не сможет понять, почему.
Миф «HTML5 / Javascript это просто»
Фрагментация устройств в веб-браузерах широко распространена, и когда вы выйдете за рамки самого простого HTML и CSS, вы заметите, что все работает не совсем так, как вы ожидаете. Вы можете потратить больше времени на решение проблем с пользовательским интерфейсом, чем сэкономили бы, если бы делали это дважды. Если вы собираетесь родными, отмечают , что родные webviews приложения является не таким же , как браузеры устройств и имеют свои собственные проблемы фрагментации.
И поскольку ваше приложение становится все более функционально сложным, вы обнаружите, что вам нужны не только базовые навыки работы с jquery, чтобы поддерживать чистоту и удобство обслуживания вашего Javascript.
Тем не менее, с таким подходом можно довольно быстро создавать простые, функциональные приложения. Но это довольно очевидно, когда приложение делает это.
Далее по спектру
Итак, мы хотим иметь лучший UX, чем могут предложить приложения в стиле Phonegap, без написания абсолютно всего с нуля несколько раз. Что мы можем сделать?
Поделиться кодом не-пользовательского интерфейса
Существует целый ряд методов для обмена бизнес-логикой на нескольких собственных платформах. Google запустил J2ObjC, который переводит Java в Objective-C. При тщательном разборе кода библиотека Java может использоваться как на Android, так и на iOS.
Такие библиотеки, как Calatrava и Kirin, позволяют манипулировать основами кода, написанными на Javascript (и, следовательно, всем, что может быть скомпилировано в Javascript) из собственного кода. Отказ от ответственности: я работаю на Future Platforms, которые создали Кирин; мы добились большого успеха, используя его на iOS с Javascript, сгенерированным из Java с GWT, с Java-кодом, также работающим на Android.
Используйте веб-просмотров ... где это уместно
У полноэкранных веб-просмотров есть много работы, чтобы имитировать переходы экрана и эффекты отказов. Но веб-просмотр в нативном приложении Chrome может быть неотличим от нативного.
Существуют стандартные и хорошо документированные методы для общения между приложениями и веб-представлениями.
Списки и таблицы могут работать особенно хорошо, когда выполняются таким образом, однако ввод текста является примером того, что лучше всего обрабатывать изначально (для полного контроля над клавиатурой).
В итоге
Подход, который вам подходит, зависит от того, насколько сложным является ваше приложение, и какой уровень полировки пользовательского интерфейса вас удовлетворит.
Мой девиз: везде, где только можно, используйте веб-просмотры, но убедитесь, что ваши пользователи не могут сказать .