Как сделать офлайн приложение
В этом году на конференции Full Frontal, оффлайн-приложения были популярной темой. Пол Кинлан сделал отличный доклад «Строим веб-приложения будущего. Завтра, сегодня и вчера» (вот его слайды), в котором он сравнивал ощущения пользователей от работы с 50 популярными мобильными приложениями для iOS и Android с ощущениями от веб-сайтов и приложений.
Стоит ли говорить, что нативные приложения зарекомендовали себя с гораздо лучшей стороны, когда соединение с интернетом было недоступно. Оффлайн-режим — очень важная вещь, и стоит думать о нем с самого начала работы над приложением, а не рассчитывать добавить его потом, когда будет время. Работая над сайтом Rareloop, мы с первого дня помнили об оффлайн-режиме. Мобильные клиенты FormAgent тоже были изначально спроектированы для работы в оффлайне, чтобы пользователь мог продолжать работу в отсутствие интернета и прозрачно синхронизироваться, когда связь появляется. В этой статье я описываю принципы и практики, которые, на мой взгляд, очень помогают разрабатывать такие приложения.
Обратите внимание! Я не рассматриваю вопросы кэширования ресурсов приложения — вы можете использовать App Cache или гибридное решение (вроде PhoneGap), это не принципиально [От переводчика: на Хабре есть подробная статья про особенности работы с Application Cache API]. Это руководство посвящено скорее тому, как спроектировать архитектуру веб-приложения для работы в оффлайн-режиме, а не тому, какие механизмы использовать для его реализации.
Базовые принципы
Максимально отвяжите приложение от сервера
Исторически большую часть работы над веб-страницей брал на себя сервер. Данные хранились в БД, доступ к ним осуществлялся через толстый слой кода на серверном языке врде PHP или Ruby, данные обрабатывались и рендерились в HTML с помощью шаблонов. Большинство современных фреймворков используют архитектуру MVC для разделения этих задач, но вся тяжёлая работа по-прежнему делается на сервере. Хранение, обработка и отображение информации требуют постоянной связи с сервером.
Подход offline first предполагает перемещение всего стека MVC на сторону клиента. На стороне сервера остаётся только лёгкий JSON API для доступа к БД. Благодаря этому серверный код становится намного меньше, проще, и его легче тестировать.
Джеймс Пирс тоже говорил об этом на Full Frontal (слайды), в несколько шутливой форме:
Резюме:
Создайте объект-обёртку для серверного API на стороне клиента
Не загрязняйте код приложения вызовами AJAX с вложенными колбэками. Создайте объект, который будет представлять функциональность сервера внутри приложения. Это способствует разделению кода и облегчает тестирование и отладку, позволяет использовать удобные заглушки на месте ещё не реализованных серверных функций. Внутри этот объект может использовать AJAX, но с точки зрения остального приложения не должно быть видно, как именно он связывается с сервером.
Резюме:
- Абстрагируйте JSON API в отдельном объекте.
- Не засоряйте код приложения вызовами AJAX.
Отвяжите обновление данных от хранилища данных
Не стоит поддаваться искушению просто запрашивать данные напрямую у объекта, абстрагирующего API сервера, и сразу использовать их для рендеринга шаблонов. Лучше создайте объект данных, который будет служить прокси между объектом API и остальным приложением. Этот объект данных будет отвечать за запросы обновлений данных и обрабатывать ситуации, когда связь обрывается — синхронизировать данные, изменённые во время работы в оффлайне.
Объект данных может опрашивать сервер на предмет наличия обновлений, когда пользователь нажмёт кнопку «обновить», или по таймеру, или по событию браузера " online " — как угодно, а отсутствие прямых обращений к серверу позволяет легче управлять кэшированием данных.
Объект данных также должен отвечать за сериализацию и сохранение своего состояния в постоянном хранилище, в Local Storage или WebSQL/IndexedDB, и уметь восстанавливать эти данные.
Резюме:
- Используйте отдельный объект данных для хранения и синхронизации состояния.
- Вся работа с данными должна идти через это прокси-объект.
Пример
В качестве простого пример возьмём приложение для управления контактами. Сначала сделаем серверный API, который позволит нам получать сырые данные контактов. Предположим, что мы создали RESTful API, где URI /contacts возвращает список всех записей контактов. В каждой записи есть поля id , firstName , lastName и email .
Затем напишем объект-обёртку над этим API:
Теперь нам нужен объект данных, который станет интерфейсом между нашим приложением и хранилищем данных. Он может выглядеть так:
Теперь у нас есть объект данных, через который мы можем запросить обновление у серверного API, но по умолчанию он будет возвращать данные, сохранённые локально. В остальном приложении можно использовать вот такой код:
Это очень простой пример, в реальном приложении, вы, вероятно, захотите реализовать объект данных, как singleton, но для илююстрации того, как надо структурировать код для работы в режиме оффлайн этого достаточно.
Когда пользователь находится на сайте ВКонтакте, его аккаунт имеет отметку «Online». Благодаря данной отметке, другие пользователи смогут понять, что человек сейчас сидит на сайте.
Существует пара хитростей, которая позволит вам находиться на сайте, переписываться, листать ленту и многое другое, при этом, оставаться оффлайн. Если вы хотите узнать, как сидеть в ВК офлайн с компьютера или телефона, то ищите ответ в инструкции ниже.
Когда статус изменится на offline
Предположим, что вы сидели в ВК и вдруг закрыли вкладку. В таком случае, ваш статус изменится на offline лишь через 15 минут.
Кроме этого, вы можете держать вкладку ВК открытой, но если вы не будете переходить в какие-либо разделы сайта, то вы обретете статус оффлайн через 15 минут.
Чтобы надпись «Online» пропала сразу же, вам нужно будет выйти из своего аккаунта в социальной сети. Если вы так сделаете, то ваш профиль приобретет статус «offline» сразу же.
Как сидеть оффлайн
Переходим к способам, которые позволят пользователю сидеть в ВК офлайн. Важно понимать, что на каждом устройстве будет своя хитрость, позволяющая быть оффлайн. Кроме этого, в самом приложении ВКонтакте нет специальной функции, позволяющей пользователю скрывать своё нахождение в сети.
С телефона
Пользователи, которые используют соц. сеть ВКонтакте на мобильном устройстве, смогут сидеть оффлайн через специальное приложение. Чуть ниже вы узнаете, что это за программа и как ей пользоваться.
Android
Если вы пользуетесь устройством на базе Android, то вам отлично подойдет приложение Kate Mobile. Чтобы сидеть в ВКонтакте оффлайн, пользователю необходимо будет выполнить следующие действия:
- Появится меню с различными пунктами. Вам нужно будет клацнуть по графе «Настройки».
- Вас перебросит на другую страницу приложения. Там находите пункт «Онлайн» и щелкаете прямо по нему.
- Перед вами должна открыться страница всего лишь с тремя разделами. Вам нужно кликнуть по пункту «Онлайн». По центру страницы должно появиться маленькое окошко, в котором необходимо будет нажать по строчке «По возможности быть оффлайн».
- Как вы с этим закончите, появится новое окошко с уведомлением. Там будет рассказана важная информация, которую необходимо будет прочитать. Если вы это сделали, то жмите по графе «ОК».
- На этом настройка приложения Kate Mobile завершена. Теперь вы можете сидеть в ВК оффлайн через смартфон на базе Android.
iPhone
Сидеть в социальной сети оффлайн на айфоне нам поможет аналогичное приложение, которые было рассмотрено на Android устройстве. Пользователю нужно будет воспользоваться таким алгоритмом действий:
С компьютера
Сидеть в ВК оффлайн можно и через персональный компьютер. Для этого, вам нужно будет воспользоваться сервисом APldog. Чтобы незаметно сидеть в ВК, выполните такой ряд действий:
Также в браузер можно добавить специальное расширение, которое позволит сидеть в ВК оффлайн. Сделать вы это сможете следующим образом:
Сегодня была подробно разобрана тема оффлайна в ВКонтакте. Теперь вы знаете, через какое время, и в каких случаях, пользователь будет не в сети. Кроме этого, вы узнали, какие программы помогут вам сидеть в ВК оффлайн через различные устройства.
Практически каждое современное мобильное приложение так или иначе включает функции, требующие подключение к интернету. Это не удивительно, поскольку интернет в телефоне у нас активен всегда: домашний Wi-Fi, мобильный 3G/4G интернет и множество открытых точек доступа по всему миру. Однако все же есть в жизни ситуации, когда пользователь остается со своим гаджетом без интернета. На этот случай мы подобрали лучшие приложения, которые смогут выручить вас, продолжая работать в автономном режиме.
Картографические сервисы и навигационные программы – те приложения, которые в первую очередь должны работать в автономном режиме. Несмотря на то, что на данный момент Google и Яндекс позволяют сохранять офлайн-карты, лучшим приложением в этом плане все-таки является MAPS.ME. Это полностью бесплатные карты без интернета на Андроид с пешеходной, велосипедной и автомобильной навигацией, которая также не нуждается в подключении к интернету.
Вы можете скачать карты любого региона мира с POI, туристическими маршрутами и другими местами из OpenStreetMap. Эти данные гораздо меньше по объему, нежели любые другие офлайн-карты. В автономном режиме есть возможность строить маршруты, искать места по адресу и названию, а также редактировать объекты и добавлять свои метки на карты. Приложение очень быстрое и отзывчивое в работе и, в целом, является отличным выбором в качестве карт без интернета на Android .
Pocket автоматически синхронизирует все материалы между телефоном, планшетом и компьютером, позволяя просматривать их в удобном виде, когда угодно без подключения к интернету. Удобство использования Pocket также заключается в том, что записям можно присваивать теги и использовать фильтры для их упорядочивания. Таким образом можно организовать собственную библиотеку статей.
На текущий момент Google Переводчик – это один из самых простых и наиболее эффективных переводчиков. За последнее время Google не только существенно улучшил качество своего перевода, но и добавил в переводчик множество дополнительных функций. Приложение позволяет переводить отдельные слова, фразы, предложения и объемные тексты на более чем 100 языков.
Главная особенность Google Переводчика заключается в том, что основные его возможности доступны в автономном режиме. Базовым языком сервиса является английский. Другие необходимые вам языки придется предварительно загрузить. Переводчик без интернета на Android работает с 52 языками. С помощью приложения можно осуществлять быстрый перевод любой текстовой информации, скопированной в буфер обмена, а также делать фото-переводы любых надписей при помощи камеры. Единственное, что, пожалуй, не может сделать Google Переводчик, находясь в режиме офлайн – это переводить голосовые и рукописные заметки, а также синхронизировать результаты перевода с сервером.
Учтите, чтобы использовать FireChat, вам необходимо предварительно зарегистрироваться в сервисе, а для этого потребуется интернет. После регистрации программа работает автономно, имеет приватные и публичные чаты, а при подключении к интернету выступает в качестве обычного интернет-мессенджера, позволяя общаться с пользователями в любой точке мира.
По замыслу создателей FireChat, приложение можно использовать в общественном транспорте, во время конференций, концертов, фестивалей и других массовых мероприятиях, когда собеседники находятся неподалёку.
Википедия – первый и основной источник, где каждый из нас черпает справочную информацию практически обо всем. Оставшись без интернета, мы лишаемся этой возможности, но, как оказалось, и здесь можно найти альтернативный способ доступа к ресурсу. Kiwix – это приложение, которое позволяет загрузить всю базу данных энциклопедии практически на любом языке и использовать Википедию без интернета на Андроид. Содержимое статей и изображения хранятся в виде сжатого файла в формате ZIM.
Изначально проект Kiwix был создан для использования в учебных заведениях, а также для тех мест, где по каким-то причинам ограничен доступ к интернету или сайту Википедии. Пользователи имеют возможность загружать не только актуальные данные из Википедии, но также из Викисловаря, Викицитатника, Викиновостей, Викиучебника и прочих источников информации. К примеру, базовый файл Википедии с изображениями занимает 16 ГБ, облегченный вариант без картинок – 4 ГБ. Википедия без интернета на Android выглядит точно также, как будто вы работаете с ней онлайн: оригинальное форматирование, активный поиск, ссылки, закладки, удобное навигационное меню с содержанием статьи.
Современные технологии еще не дошли до того уровня, когда в смартфоны начали встраивать датчик температуры, поэтому прогноз погоды мы получаем из различных источников через интернет. Полностью автономного погодного приложения не существует. Но любой погодный информер для Android способен показывать данные о погоде не только на сегодня и завтра, но и на несколько дней вперед. Эта информация кешируется на устройстве и, даже если вы окажетесь офлайн, вы всегда сможете открыть приложение и посмотреть погоду без интернета на Андроид.
Amber Weather нельзя назвать одним из лучших погодных приложений по той причине, что оно несколько перегружено лишней информацией и показывает навязчивые уведомления. Однако мы выбрали его за то, что оно предоставляет детализированную сводку о погоде без интернета на Android на 15 дней вперед.
Главная особенность Amber Weather – персонализация приложения с более, чем 70 виджетами, которые можно настроить на свой вкус. Программа показывает погоду из двух источников – Foreca и Open Wheather Map. Вся информация, а это температура воздуха на данный момент, скорость и направление ветра, атмосферное давление, влажность воздуха, видимость, точка росы, индекс ультрафиолета, представлена списком и графиками и остается доступной в режиме офлайн даже при перезагрузке мобильного устройства.
В моменты отсутствия интернета полезно заняться каким-нибудь полезным делом. Таким занятием может оказаться изучение иностранного языка. Memrise позволяет расширить словарный запас и подтянуть базовые знание языка. Методом изучения иностранного языка в Memrise выступает интервальное повторение новых слов, когда каждое конкретное слово нужно повторять через определенный промежуток времени, например, через час, день, неделю, месяц и т.д. Программа показывает новые слова, постепенно добавляя к ним другие, тем самым наращивая ваш словарь. Такое метод позволяет помнить слова в течение длительного периода времени.
Основное преимущество Memrise – количество языковых курсов для изучения. Кроме того, программа позволяет самостоятельно добавлять карточки с новыми словами и создавать собственные обучающие курсы. Наконец, самое главное, Memrise можно использовать без подключения к интернету. Достаточно выбрать языковой курс и загрузить его при первом запуске приложения. После этого можно приступать к изучению иностранного языка в режиме офлайн.
Наличие FM-модуля в смартфоне на самом деле является большим плюсом. В какой-нибудь глуши можно слушать радио без интернета на Андроид в диапазоне FM. Те, у кого нет такой возможности, используют онлайн-радио. На сегодняшний день существует уйма приложений, позволяющие проигрывать любую радиостанцию через интернет. Но только некоторые из них умеют записывать радиоэфир. Одним из таких приложений является Audials, которое содержит каталог с более чем 90 000 радиостанциями со всего мира. При активном интернет-подключении функции программы практически безграничны.
Нас, в первую очередь, интересует возможность записи эфира, что пригодится для прослушивания радио без интернета на Android. В этом плане Audials может записывать весь аудиопоток целиком или отдельными треками. А главная «фишка» приложения – это отложенная запись. Выбираете дату, время, станцию, продолжительность записи и программа самостоятельно запишет эфир в назначенное время.
Еще одна особенность Audials заключается в том, что приложение считывает программу эфира текущей радиостанции, показывает отдельные композиции и подтягивает к ним обложки. Трансляция также кешируется, что позволяет скачивать уже прослушанные треки. Все записи сохраняются в разделе «Мои записи». Кроме того, Audials также может выступать в качестве аудиоплеера и проигрывать вашу локальную музыку на смартфоне.
Нет, мы не ошиблись. Клиент облачного хранилища Яндекс.Диск также попадает в этот список приложений за возможность работать с удаленными файлами в режиме офлайн. Такая функция появилась два года назад. Она позволяет загружать выбранные файлы и папки во внутреннюю память устройства и получать к ним доступ при отсутствии интернета.
Таким образом можно, например, слушать музыку в общественном транспорте прямо в приложении, редактировать текстовые документы, просматривать фотографии. При этом любые изменения с файлами синхронизируются, как только устройство будет снова подключено к сети.
А как часто вам приходится использовать смартфон без интернета? Какими офлайн-приложениями пользуетесь вы?
Что такое режим офлайн? Если говорить простым языком, это возможность работы в каком-либо приложении при отсутствии доступа к связи. Для компьютеров это отключение, прежде всего, Интернета, возможно, и локальной сети. Для мобильных телефонов это также отключение и телефонной связи, и Bluetooth.
Для чего нужен офлайн-режим на компьютерах?
Большинство пользователей ПК, даже работая в программах, которые не связаны с необходимостью доступа в Интернет, постоянно к нему подключены. Некоторые - по привычке, другие - из-за использования таких операционных систем, как ChromeOS. В данной системе все действия совершаются через Интернет. Если вам понадобится что-либо распечатать, а доступа к Сети нет, то вы ничего не сможете сделать, если, конечно, документ не сохранен в локальном хранилище и нет другой операционной системы.
Помимо этого, известно, что Google отслеживает действия пользователей и передает их личные данные американским спецслужбам по требованию. Если вы не озабочены проблемами конфиденциальности, то вспомните о том, что для MS Windows, которой пользуется большинство пользователей, в Сети полно вирусов, и подцепить их там, где Интернет можно было не использовать, порой достаточно обидно.
Автономный режим в мобильном телефоне
После того как мы разобрались, что такое режим офлайн в компьютере, посмотрим, что он собой представляет в мобильном телефоне.
В телефонах, в которых установлена операционная система Android, он называется "Автономным режимом". Его используют в тех местах, где использование мобильной связи недопустимо. Примером такого места может являться самолет, поэтому часто этот режим в телефонах называют "Режимом полета". Использование данного режима позволяет экономить батарею, которая, как известно, имеет свойство разряжаться в самое неподходящее время.
Как отключить офлайн-режим? В разных телефонах это происходит по-разному. Обычно данная опция находится в "Настройках", где нужно выбрать "Профили" или "Режимы", а там уже поставить галочку напротив "Обычный режим". В некоторых моделях требуется перезагрузка, после чего будет автоматически предложено перейти в обычный режим.
Убираем офлайн-режим в браузерах
В случае если у вас лимитированный трафик, который неожиданно стал заканчиваться, нужно срочно выходить в режим офлайн. Что такое в этом случае предпринимается? Следует включить в браузерах, с помощью которых осуществлялся выход во Всемирную сеть, автономный режим. Тогда многие страницы из тех, которые посещались во время работы Интернета, можно будет просмотреть из кэша.
В этом случае ответ на вопрос "как убрать офлайн-режим" достаточно тривиален - нужно снять галочку с "Автономного режима". В новых версиях браузеров обычно панель меню скрыта, поэтому ее нужно вызвать доступным способом, например, нажав Alt на клавиатуре, а там уже выбрать "Автономный режим".
Офлайн как синоним невидимости
Термин "офлайн" стал настолько популярным, что его стали использовать не только как показатель отсутствия Сети, но и как показатель реального или мнимого отсутствия в Сети. Так, можно зайти в социальную сеть "ВКонтакте" и сделаться невидимым для других пользователей. То есть вы будете присутствовать на сайте, но для других пользователей ваш статус указывает совсем противоположную информацию. Это также называют "нахождением в офлайне".
Работа с некоторыми интернет-приложениями офлайн
Изначально онлайновые приложения, такие как "Гугл документы", получили возможность работать в офлайн-режиме. Можно отметить, что это способствует здоровому соперничеству между создателями офисных приложений, прежде всего корпорациями Microsoft и Google, что должно повысить их конкурентоспособность.
Как включить офлайн-режим в "Гугл документах"? Этого возможно добиться, используя браузер Chrome или его открытый аналог Chromium. Открываем в нем свое "облако" в "Гугле" (Google Drive) - для этого нужен интернет, далее в панели навигации щелкаем по кнопке "Еще". Выбираем категорию "Автономные", в результате чего появится инструкция, в которой указано, что сначала нужно установить аддон для этих целей, после чего нажать кнопку доступа офлайн. Это приведет к тому, что файлы из "облака" будут скопированы на локальное устройство хранения. После этого можно отключать интернет и работать с "Гугл Документами" офлайн.
Таким образом, мы ответили на вопрос: "Как включить офлайн-режим в приложениях «Гугл Докс»?"
Подобным образом можно работать и с "Гугл картами". При нахождении в онлайн-режиме указывается область на карте, которая будет необходима при работе офлайн. Затем карта скачивается, и по данной области можно будет осуществлять поиск офлайн.
В мобильном телефоне офлайн-режим может быть включен не только полным отключением мобильной сети, но и отключением одного интернета с помощью снятия галочки с "Использования мобильных данных".
Выход из офлайн-режима
Иногда для отдельных приложений выход из офлайна может блокироваться файерволами. Так, в "Стиме" для игр также предусматривается режим офлайн. При этом в Social Club некоторые пользователи не могут покинуть офлайн-режим. Для того чтобы снять это ограничение, необходимо зайти в настройки файервола и откорректировать там правила и зоны. Здесь этим файлам Social Club дано табу на выход в Интернет. Его необходимо снять, после чего выход из офлайн-режима станет возможным.
Это относится не только к Social Club, но и к некоторым играм Steam. Возможно, наблюдается и в других приложениях.
Как выйти из офлайн-режима? Если данная операция заблокирована, идем в файервол, проверяем правила и зоны, делаем их разрешительными для данного приложения. Если такое встречается часто, проверьте настройки брандмауэра Windows.
В заключение
Подведем итог: что такое режим офлайн? Помимо того, что это режим без доступа к Интернету, под данным термином понимают и невидимость в некоторых социальных сетях. Некоторые интернет-приложения способны работать офлайн, при этом скачивая "облачные" файлы на локальные хранилища.
Читайте также: