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 посвя­ща­ет мно­го вре­ме­ни созда­нию офлайн-функ­ци­о­на­ла. Одна­ко на дан­ный момент, отме­ча­ет Терн­булл, завер­шая сес­сию, серьез­но­го сооб­ще­ства раз­ра­бот­чи­ков, раз­ви­ва­ю­щих подоб­ный функ­ци­о­нал, нет.