SXSW 2016. Почему важно создавать мобильные приложения, работающие в офлайн-режиме

No Signal. Фотография: Peter Kofler (Flickr; CC-BY)
No Signal. Фотография: Peter Kofler (Flickr; CC-BY)
Зачем в век Интернета создавать мобильные приложения, которые могут работать в офлайн режиме, почему при разработке социальных приложений необходимо учитывать, что пользователь не всегда имеет доступ к сети – об этом говорили участники сессии «Офлайн-веб это не оксюморон» (The Offline Web: Not an Oxymoron) на конференции SXSW 2016.

Поделитесь этим руководством с коллегами

13 марта 2016 года на конференции SXSW2016 Алекс Тернбулл (Alex Turnbull – см. его статью по офлайн-доступу для различных гражданских приложений), разработчик мобильных приложений в Kainos Software, рассказал о важности офлайн-функционала в создании современных мобильных приложений.

Офлайн-режим – не ошибка. Ошибка – не иметь офлайн-режима

Офлайн-режим – это не ошибка, это факт жизни мобильного приложения. Приложение, которое не может работать в офлайн-режиме, сломано, считает Тернбулл. При этом основным врагом авторов мобильных приложений является не офлайн как таковой, а медленное соединение, так называемое lo-fi.

По его данным, ежегодно 1,7 млрд долларов теряется из-за низкой скорости подключения к сайтам (и, следовательно, невозможности обеспечить полный функционал в условиях, близких к офлайновым). 74% пользователей уходят, 46% утверждают, что вообще не вернутся на плохо грузящийся сайт.

С точки зрения гражданских приложений, офлайн-режим чрезвычайно важен, многие приложения, направленные на интересы менее привилегированных групп населения, должны функционировать в условиях ограниченного доступа в Интернет (труднодоступные, сельские районы).

Как лучше всего осуществить офлайн-функционал?

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

Разработчики должны использовать не только концепцию Mobile First (подробнее о концепции на русском здесь), но и Offline First.  Необходимо учитывать, что приложение будет изначально использоваться в офлайн-, а не онлайн-режиме.

SXSW 2016. Почему важно создавать мобильные приложения, работающие в офлайн-режиме
Офлайн-функционал для работы приложения. Фрагмент презентации спикера. Фото: Алексей Сидоренко.

Какова логика подобного приложения (см. изображение)? Сначала кэшируются основные ресурсы приложения, затем показывается шаблон страницы приложения. Если содержание ранее было загружено в кэш, то страница показывается после запроса на ее обновление. Если же кэш не был загружен, то приложение пытается подключиться к Сети. Если не удается подключиться к Сети, то показывается изображение с ошибкой.

Инструменты разработчика для офлайн-режима

Тернбулл перечисляет основные инструменты разработчика для осуществления офлайн-функционала.

  1. Чтобы сохранять ресурсы приложения в офлайн, можно использовать набор функций в стандарте HTML5 Application Cache или Service Worker.
  2. Чтобы сохранять настройки приложения офлайн, Тернбулл советует Web Storage, IndexedDB (через оболочку LocalForage или PouchDB), WebSQL (предупреждается, что поддержка WebSQL уже прекращена).
  3. Чтобы осуществлять офлайн-действия – Web Worker.

Приложение должно уведомлять пользователя, что находится в офлайн-режиме. На данный момент лучшей HTML-библиотекой для встраивания офлайн-функций, по мнению Тернбулла, является Polymer.

Будущее офлайн-режима

Кто занимается офлайн-функционалом? Многие наверняка заметили функцию отложенной публикации в Facebook. Кроме того, Google посвящает много времени созданию офлайн-функционала. Однако на данный момент, отмечает Тернбулл, завершая сессию, серьезного сообщества разработчиков, развивающих подобный функционал, нет.