Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap для iPad Олег Неклюдов.

Презентация:



Advertisements
Похожие презентации
BitrixMobile Юрий Тушинский Технический директор Битрикс.
Advertisements

Мобильные приложения: разработка для платформы «1С-Битрикс» Юрий Тушинский Технический директор «Битрикс»
Разгони свой сайт Лекция 1: Особенности клиентской оптимизации Мациевский Николай 1 / 23 webo.in.
Магазин М.Видео Приложение для Android, iOS, Chrome.
Разработка и будущее веб-приложений Сергей Ставский Руководитель мобильных проектов ОДНОКЛАССНИКИ.
JS, or not JS, вот в чем вопрос Фитискин Александр веб-технолог студия «Dominion»
Богданов Марат Робертович Современные веб-технологии. Подробный курс RIA-приложения.
Октябрь 2013 г. Использование учебных мультимедийных ресурсов ОАО «Издательство «Просвещение.
О разработке приложений для разных мобильных платформ Виктор Кузьмин Руководитель разработки компании AlterGeo О разработке приложений для разных мобильных.
Технология сетевого дизайна и ее программное обеспечение Лекция 5 CSS3. Создание элементов интерфейса с помощью CSS.
ОТЧЕТ ПО ИСПОЛНЕНИЮ II ЭТАПА ГОСУДАРСТВЕННОГО КОНТРАКТА ОТ Развитие системы коммуникационного сопровождения процессов развития.
Разгони свой сайт Лекция 4: Объединение файлов Мациевский Николай 1 / 22 webo.in.
Проектирование и разработка электронного курса в программном средстве «LinkUS» Александр Мякота, директор Центра профессиональной подготовки «Верная линия»
Скорость имеет значение Проблема медленных сайтов реальна Мациевский Николай, Web Optimizator 1 / 19 webo.in / webo.name.
"С чего начинать, Ваше Величество?" "Начни с начала", важно ответил Король, "и продолжай, пока не дойдешь до конца." Льюис Кэролл, Приключения Алисы в.
Создание электронных учебников
Симпозиум 2008 Сергей Шутов, ДИМАС Борис Егоров, Интерсистемс Практика использования Zen и Прототип-6.
JavaScript и доступность веб- сайтов Владимир Агафонкин.
SVG Докладчик: Дьяченко Василий, мат-мех, группа 345.
Начала Web дизайна. Web сайт Набор файлов, сгруппированных в несколько рубрик (разделов) и связанных между собою гипертекстовыми ссылками Основной тип.
Транксрипт:

Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap для iPad Олег Неклюдов

Цель доклада (о чем доклад?) Поделиться успешным опытом разработки на JavaScript+HTML+CSS+PhoneGap для iPad Показать ряд проблемных аспектов и способов их решений Помочь в принятии верного решения о выборе технологии на старте для мобильного проекта

Содержание доклада Постановка задачи Выбор способа решения Проблемные места и способы их решения Итоги и выводы

Постановка задачи Нужен аналог Adobe Digital Publishing Suite – (пример: журнал Wired) Требования – Листание пальцем (статьи по горизонтали, страницы по вертикали) – Интерактивный контент, аудио/видео – Навигация по журналу – Витрина журналов со скачиванием и локальным хранением контента – XML-формат верстки журналов

Выбор способа реализации Flash – Есть технология Flash -> iOS – Попробовали – тормозит –> не подходит iOS – Отсутствуют ресурсы (разработчики) -> не подходит PhoneGap – Есть значительный опыт JavaScript(GWT)+HTML+CSS – Провели эксперимент – хорошие результаты -> БЕРЕМ В РАБОТУ

Проблемы и решения

1. Листание страниц Плавное листание страниц (нагруженных графикой) – это самое главное Стандартные JS/CSS способы не подходят – листание происходит рывками РЕШЕНИЕ (CSS3, hardware-accelerated): -webkit-transition-property: -webkit-transform; -webkit-transform: translate3d(x,y,z) (в JavaScript: WebKitCSSMatrix)

2. Кэширование изображений ПРОБЛЕМА: – При увеличении количества картинок в журнале приложение вылетает на iPad по памяти РЕШЕНИЕ: – Реализуем специальную логику «обнуления» (в одной из промежуточных версий iOS не работает)

3. Большие размеры ПРОБЛЕМА: – При увеличении «физических» размеров DOM-дерева журнала приложение вылетает на iPad (молча) РЕШЕНИЕ: – Переделываем логику движка листания: статическое DOM-дерево заменяем динамическим построением (при смене страниц)

4. ChildBrowser plugin ЗАДАЧА: – Показывать HTML-страницы по ссылкам РЕШЕНИЕ: – Используем PhoneGap-плагин ChildBrowser ДОПОЛНИТЕЛЬНАЯ ПРОБЛЕМА (не решена): – В последних версиях iOS при открытом ChildBrowser не отслеживается изменение ориентации окна

5. Загрузка и хранение контента ЗАДАЧА: – Требуется загружать, хранить и использовать локально данные и файлы с контентом ПРОБЛЕМЫ: – HTML5 offline cache – отсутствует у PhoneGap-приложения – В PhoneGap отсутствуют «стандартные» средства загрузки файлов из интернета (с сохранением файлов локально)

6. Загрузка и хранение контента РЕШЕНИЕ: – Для загрузки файлов находим PixFileDownload плагин и докручиваем его сами (чтобы заработал на новом PG) – Доступ к сохраненным файлам имеем через PhoneGap File API, а также работают ссылки из HTML – Для данных используем HTML5 LocalStorage – Реализовали свой менеджер закачек на GWT/JavaScript

7. По мелочам Мелкие отличия в работе DOM-событий в Chrome и iPad Успешно использованы несколько CSS3-эффектов в элементах журнала Успешно использован сторонний компонент iScroll для организации скроллинга (в дополнение к GWT- компоненту) Осталась нерешенная проблема с включением в страницы журнала «внешнего» HTML

Итоги и выводы

Итог разработки (326 часов) Мы получили работающий движок, на котором можно делать журналы (и другие продукты) – Пример: for-ipad/id http://itunes.apple.com/ru/app/wow-magazine- for-ipad/id В планах – Расширение функционала (например, InAppPurchase) – Портирование на Android

Модульная структура Core – модуль абстрактной листалки Engine – XML-движок Mag – навигация по журналу Shell – оболочка с витриной и загрузкой файлов Модульная структура позволяет легко переиспользовать отдельные компоненты

Портирование на Andriod Еще только предстоит Возможные проблемы и трудности: – Плавное листание – Загрузка и хранение файлов – Разные размеры экрана

Процесс разработки Движок – Основная разработка на Windows + Chrome – Финальная отладка на Маке в эмуляторе и iPade Журнал – Верстальщик руками верстает XML – Смотрит, что получается на Маке в эмуляторе iPad

Выводы Можно ли использовать PhoneGap-подход? Стоит ли использовать PhoneGap-подход? Когда стоит использовать PhoneGap-подход? Как использовать PhoneGap-подход?

Спасибо! ВОПРОСЫ ? Олег Неклюдов