Поделитесь этим руководством с коллегами
13 марта 2016 года на конференции SXSW2016 Алекс Тернбулл (Alex Turnbull – см. его статью по офлайн-доступу для различных гражданских приложений), разработчик мобильных приложений в Kainos Software, рассказал о важности офлайн-функционала в создании современных мобильных приложений.
Офлайн-режим – не ошибка. Ошибка – не иметь офлайн-режима
Офлайн-режим – это не ошибка, это факт жизни мобильного приложения. Приложение, которое не может работать в офлайн-режиме, сломано, считает Тернбулл. При этом основным врагом авторов мобильных приложений является не офлайн как таковой, а медленное соединение, так называемое lo-fi.
По его данным, ежегодно 1,7 млрд долларов теряется из-за низкой скорости подключения к сайтам (и, следовательно, невозможности обеспечить полный функционал в условиях, близких к офлайновым). 74% пользователей уходят, 46% утверждают, что вообще не вернутся на плохо грузящийся сайт.
С точки зрения гражданских приложений, офлайн-режим чрезвычайно важен, многие приложения, направленные на интересы менее привилегированных групп населения, должны функционировать в условиях ограниченного доступа в Интернет (труднодоступные, сельские районы).
Как лучше всего осуществить офлайн-функционал?
Следует давать пользователям возможность осуществлять действия, как если бы они были подключены к Сети, но синхронизировать их с сервером уже во время подключения. Или, например, разработчик может позволить системе записать необходимые данные пользовательской активности и выслать push-уведомление, когда приложение вернулось в Сеть.
Разработчики должны использовать не только концепцию Mobile First (подробнее о концепции на русском здесь), но и Offline First. Необходимо учитывать, что приложение будет изначально использоваться в офлайн-, а не онлайн-режиме.
Какова логика подобного приложения (см. изображение)? Сначала кэшируются основные ресурсы приложения, затем показывается шаблон страницы приложения. Если содержание ранее было загружено в кэш, то страница показывается после запроса на ее обновление. Если же кэш не был загружен, то приложение пытается подключиться к Сети. Если не удается подключиться к Сети, то показывается изображение с ошибкой.
Инструменты разработчика для офлайн-режима
Тернбулл перечисляет основные инструменты разработчика для осуществления офлайн-функционала.
- Чтобы сохранять ресурсы приложения в офлайн, можно использовать набор функций в стандарте HTML5 Application Cache или Service Worker.
- Чтобы сохранять настройки приложения офлайн, Тернбулл советует Web Storage, IndexedDB (через оболочку LocalForage или PouchDB), WebSQL (предупреждается, что поддержка WebSQL уже прекращена).
- Чтобы осуществлять офлайн-действия – Web Worker.
Приложение должно уведомлять пользователя, что находится в офлайн-режиме. На данный момент лучшей HTML-библиотекой для встраивания офлайн-функций, по мнению Тернбулла, является Polymer.
Будущее офлайн-режима
Кто занимается офлайн-функционалом? Многие наверняка заметили функцию отложенной публикации в Facebook. Кроме того, Google посвящает много времени созданию офлайн-функционала. Однако на данный момент, отмечает Тернбулл, завершая сессию, серьезного сообщества разработчиков, развивающих подобный функционал, нет.