22 April 2010

Обновление читалки uBooks

Smartphones
image
Вот и вышло долгожданное обновления бесплатной версии читалки uBooks. Причины столь долгого ожидания сложились в целую историю…


Функционал


Хотя подождите, с историей, давайте посмотрим на функционал и скрины:

uBooks Screen 1uBooks Screen 2

Выделю некторые фичи приложения:

  • плавная автопрокрутка
  • анимация при листании
  • язык приложения
  • настраиваемые тап зоны
  • поиск по книге
  • ручной поворот экрана
  • книжная полка
  • поиск по книжной полке
  • папки
  • перемещение в книге по проценту


uBooks Screen 3uBooks Screen 4

Из того, что не заметишь на скринах выделю способы заливки книг:
  • используя http сервер
  • используя ftp сервер
  • через web browser
  • public storage


Поучительная история



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

С целью повысить удобство пользователя было принято рискованное решение использовать скрытые возможности фрэймверка WebKit. Именно это и не понравилось купертиновцам. До сих пор остается загадкой, каким образом они пропустили бесплатную версию, которая построена по тому же принципу и отличающаяся лишь наличием баннеров.
Мы извлекли из этого ценный урок — началась разработка новой версии, в которой отсутствовали бы недочеты предыдущей версии, а именно мы хотели избавиться от WebKit. Контролу, который бы обрисовывал текст, была присвоена кличка Вьювер. И закипела работа…

Вьювер планировалось делать двумя путями: с использованием OpenGL и нашим ноу-хау. Было сформировано 2 команды, которые работали параллельно над этими задачами. Считалось, что та команда, которая быстрее и качественнее выпустит промышленную версию вьювера, и победила. В этом духе соперничества мы проработали некоторое время, и в конечном итоге быстрее к финишу пришла команда с нашим ноу-хау, но до конца было еще далеко. Впереди предстояло объединиться и исправить недочеты выпущенной версии, добавить полезности, которые внесут удобство при чтении книг.
Одним из главных недочетов, на который многие жаловались, было некорректное распознание кодировки для TXT файлов. Для решения этой проблемы был реализован алгоритм, который анализировал частоту вхождения символов и выдвигал предположение об использованной кодировке в файле. Ну и конечно мы не забыли о пользователе – после конвертирования книги в наш собственный формат мы оставили возможность перекодировать книгу.

Для быстрой навигации по файлу мы разработали наш собственный формат хранения книг. Формат представляет собой xml, в котором были пронумерованы параграфы и количество символов в каждом из них для более точного позиционирования. Для быстрого перемещения по XML мы решили отказаться от предоставляемого Apple парсера NSXMLParser, а на замену его использовать технологию XPath, которая позволяет быстро осуществлять доступ к требуемому параграфу и отрисовывать его.

Достаточно трудной задачей было оптимизировать процесс отрисовки текста на малых шрифтах при автопрокрутке. При чтении книг были рывкообразные движения, что утомляло глаза. Происходило это по причине того, что процессор iPhone-a не успевал отрисовывать и обрабатывать поступающие данные в одном потоке. Разбив эти две операции на несколько потоков и синхронизировав их, мы существенно разгрузили процессор. Это позволило пользователю выполнять в бэкграунде дополнительные действия, к примеру, слушать музыку во время чтения.

Кстати, все члены команды были оснащены iPhona'ми, на которых они тестировали приложение не только на работе, но и в реальной жизни, т.е. дома, в транспорте и конечно на работе. Тем самым мы были заинтересованны в скорейшей и более качественной разработке приложения, внося предложения по юзабилити. Одно из них — встроенный веб браузер, который позволит, сидя в кафе, полазить по интеренет страницам и закачать новенькую книгу не прибегая к помощи ноутбука или ПК.

Развитие uBooks продолжается, и после выхода в AppStore мы планируем портировать его на на новый и амбициозный девайс — iPad, расширить функционал, повысить надежность и быстродействие приложения.

Мини-Конкурс



Условия конкурса просты:
  • дочитать до этого места статью
  • оставить комментарий с фидбеком, который понравится хабросообществу
Награда — промо-код к платной версии (всего $4.99 и никакой рекламы).
Tags:iphoneubooksчиталкаnix solutions
Hubs: Smartphones
+22
661 7
Comments 47