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

Содержание

Слайд 2

Цель доклада (о чем доклад?)

Поделиться успешным опытом разработки на JavaScript+HTML+CSS+PhoneGap для iPad
Показать

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

Слайд 3

Содержание доклада

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

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

Слайд 4

Постановка задачи

Нужен аналог Adobe Digital Publishing Suite
(пример: журнал Wired)
Требования
Листание пальцем (статьи по

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

Слайд 5

Выбор способа реализации

Flash
Есть технология Flash -> iOS
Попробовали – тормозит –> не подходит
iOS
Отсутствуют

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

Слайд 6

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

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

Слайд 7

1. Листание страниц

Плавное листание страниц (нагруженных графикой) – это самое главное
Стандартные JS/CSS

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

Слайд 8

2. Кэширование изображений

ПРОБЛЕМА:
При увеличении количества картинок в журнале приложение вылетает на iPad

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

(в одной из промежуточных версий iOS не работает)

Слайд 9

3. Большие размеры

ПРОБЛЕМА:
При увеличении «физических» размеров DOM-дерева журнала приложение вылетает на iPad

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

Слайд 10

4. ChildBrowser plugin

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

4. ChildBrowser plugin ЗАДАЧА: Показывать HTML-страницы по ссылкам РЕШЕНИЕ: Используем PhoneGap-плагин ChildBrowser
версиях iOS при открытом ChildBrowser не отслеживается изменение ориентации окна

Слайд 11

5. Загрузка и хранение контента

ЗАДАЧА:
Требуется загружать, хранить и использовать локально данные и

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

Слайд 12

6. Загрузка и хранение контента

РЕШЕНИЕ:
Для загрузки файлов находим PixFileDownload плагин и докручиваем

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

Слайд 13

7. По мелочам

Мелкие отличия в работе DOM-событий в Chrome и iPad
Успешно использованы

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

Слайд 14

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

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

Слайд 15

Итог разработки (326 часов)

Мы получили работающий движок, на котором можно делать журналы

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

Слайд 16

Модульная структура

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

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

Слайд 17

Портирование на Andriod

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

Портирование на Andriod Еще только предстоит Возможные проблемы и трудности: Плавное листание
размеры экрана

Слайд 18

Процесс разработки

Движок
Основная разработка на Windows + Chrome
Финальная отладка на Маке в эмуляторе

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

Слайд 19

Выводы

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

Выводы Можно ли использовать PhoneGap-подход? Стоит ли использовать PhoneGap-подход? Когда стоит использовать PhoneGap-подход? Как использовать PhoneGap-подход?
Имя файла: Разработка-сложного-мультимедийного-приложения-на-JavaScript+HTML5-и-PhoneGap-для-iPad.pptx
Количество просмотров: 208
Количество скачиваний: 0