Мой первый опыт работы с Sencha Touch 2

Вчера я подготовил первый релиз приложения на Sencha Touch 2 для клиента. Приложение достаточно сложное, много запросов к API, много графики и т.д. Клиент выбрал Sencha Touch потому что он хотел, чтобы его приложение работало на десктопе через браузер, на iPhone, Androd Phone, iPad и Android Tablet. Причем для телефона и планшета интерфейс абсолютно разный. Приложение разрабатывается при помощи последних на текущий момент версий Sencha Architect 2.2.2, Sencha CMD 3.1.1 и Sencha Touch 2.2. Я отучился на недельных курсах по Sencha Touch в Мельбурне, где получил опыт работы с фреймворком и огромную книгу с Best Practices. В общем я имею представление как нужно правильно планировать и строить архитектуру приложений на Sencha Touch, используя MVC паттерн. При таком подходе Sencha обещает, что приложения будут работать быстро настолько, насколько это возможно.

С первыми проблемами я столкнулся при программировании архитектуры приложения. Я не нашел возможности добавить свои кастомные хелпер классы в Sencha Architect. Проведя несколько часов на форумах, мне все же удалось через одно место прикрутить их. Та же участь постигла и профили различных устройств, которые необходимы, если хочется иметь разный интерфейс для телефона и планшета. Профили прикручиваются также как и кастомные классы, так что эту проблему я решил уже быстро. Дальше разработка пошла побыстрее, были конечно всякие мелкие проблемки типа Cross Domain AJAX запросов, которые решили при помощи CORS, но это совсем другая история.

Подошло время для первого релиза. Sencha очень гордится тем, что начиная с версии 2.1 все релизы нужно делать при помощи command line утилиты - Sencha CMD. Production релиз для веба получился отличным. Все javascript файлы слились в один, все минифицировалось и занимало очень мало места. Я этого не ожидал, и мне это очень понравилось.

Так как provision profiles для iOS еще были не готовы, я решил зарелизить APK для Android. Создал package файл, внес все необходимые данные, но Android версия упорно не хотела собираться. Через какое-то время танцев с бубном, мне все же удалось собрать Android версию приложения. Радостно запустив приложение на SGS3, я обнаружил дополнительный бар наверху приложения. Android разработчики, сказали, что его можно убрать, отредактировав manifest файл приложения, что я так и не понял как сделать в Sencha CMD. В общем было решено отбросить Sencha CMD и зарелизить через PhoneGap, где этой панели уже нет по умолчанию. К моменту релиза через PhoneGap, provision profiles для iOS уже были готовы, и я зарелизил версию и для iOS, после чего настало время тестирования.

Для тестирования у меня были следующие устройства: - iPhone 4, 4S, 5 - iPad 2, 3 - Samsung Galaxy S3 - HTC Desire HD - HTC One (который старый)

Тестировал на iOS начиная с 5-ки и выше и на Android с 2.3.5 и выше.

Вот собственно результатами тестов очень хочется поделиться:

  • iPhone 5 / 4/S / iPad 3 - работает одинаково быстро, но создается ощущение, что приложение не нативное. Какое-то хрупкое.
  • iPhone 4 / iPad 2 - приложение работает заметно медленнее. Нажатия на кнопки с задержкой, артефакты в анимациях. В общем, видно, что с приложением, что-то не так.
  • Samsung Galaxy S3 - еще медленнее, чем iPhone 4, но по крайней мере можно работать с приложением.
  • HTC Desire HD - тормозит страшно, дикие задержки при нажатии на кнопки. Пользоваться приложением невозможно.
  • HTC One - приложение зависает на первом экране и ничего сделать дальше невозможно.

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

Даже если вы собираетесь сделать очень простое приложение, вы никогда не получите такой user experience, как у нативных приложений. У пользователя будет ощущение, что это сделано на коленке, и он никогда не будет относиться к такому приложению всерьез. Это мое мнение.

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

Show Comments