Среднестатистический житель города-миллионника, особенно в России, достаточно много времени проводит онлайн. Однако нельзя сказать, что покрытие и качество сигнала мобильного интернета одинаково хороши в Москве и, например, в Макарово Иркутской области. Например, по данным официальных источников, на севере и на востоке Российской Федерации в некоторых областях покрытие сетями 2-4G просто отсутствует. При этом, по данным 2020 года, 40% мирового населения совсем не подключено к интернету. Поэтому возникают ситуации и сценарии, когда необходим обмен данными в офлайн-режиме (здесь и далее - режиме, когда устройства не подключены к сети Интернет). Если мы говорим о предприятиях и каких-то стационарных устройствах, можно организовать локальную сеть. По данным глобальной статистики, более половины трафика интернета приходится именно на мобильные устройства, например, мобильные телефоны. В этой статье я не рассматриваю обмен в офлайне по сетям и проводам, фокус нацелен на беспроводную офлайн-передачу данных между портативными устройствами.  Далее мы: рассмотрим возможные ситуации, когда вообще нужна передача данных в офлайн-режиме между мобильными устройствами; узнаем, какие есть способы передачи данных в таком режиме; сравним эти способы, попробуем понять, какие есть между ними сходства и различия при использовании. Самый, наверное, распространенный случай передачи данных в офлайне, которым хоть раз пользовался каждый, - через Bluetooth. На смену массовой переправке фото и музыки через ИК-порты* (семейство стандартов IrDA) в 2004 году пришел именно Bluetooth. AirDrop в iOS, как и Nearby Share в Android, используют Bluetooth в комбинации с вайфаем всё для тех же целей быстрого и простого для пользователей обмена данными между двумя мобильными устройствами.  Мы частично затронули уже две возможные ситуации использования офлайн-обмена, перечислим чуть больше сценариев и ситуаций: 1.    Передача данных между мобильными устройствами в офлайне. Повседневный обмен файлами (мультимедиа, документы и т. д.) с одного мобильного устройства на другое, в том числе с помощью AirDrop и Nearby Share; 2.    Использование устройств IOT дома или на производстве. Например, большую часть времени они работают в онлайн-режиме, но могут работать и офлайн, чтобы передать оперативные данные в какой-нибудь хаб. Некоторые домашние устройства Xiaomi, например, датчики температуры и влажности, работают в принципе в офлайне и через Bluetooth передают данные, например, в Aqara или другой хаб. Аналогичным подходом можно пользоваться и на промышленных предприятиях для передачи данных с датчиков, устройств и их общения друг с другом; 3.    Оплата или подписание документов в режиме офлайн. При этом, конечно, под оплатой имеем в виду не существующий безналичный расчет, который проходит с участием эмитента карты и других участников для возможности валидации данных, а что-то более неизведанное, операции с цифровой валютой. Оплатить товар или услугу и подписать документ можно без внешних участников, для этого нужны только два устройства участников, в которых есть нужные ключи, именно поэтому эти операции можно делать в офлайне. * Тут важно отметить, что фактически ИК-порты не пропали бесследно и их до сих пор используют такие производители, как Xiaomi и Huawei в основном для управления IOT-техникой.  Удобно разделять возможные способы обмена в офлайн-режиме на два больших типа:  для одностороннего обмена; для двухстороннего взаимодействия. Кратко мы рассмотрим часто упоминающиеся технологии для каждого из этих типов. Для устройств сети, которые только собирают и передают данные, например, датчиков умного дома или установок на производстве, бывает достаточно одностороннего обмена. Такие устройства можно подключить в беспроводные сенсорные сети. Существует ряд стандартов, которые используются для них, наиболее знакомые для меня из них следующие: ZigBee. Интересная особенность стандарта в том, что сети, реализованные в соответствии с ним, позволяют организовать "самоорганизующуюся и самовосстанавливающуюся ячеистую (mesh) топологию с ретрансляцией и маршрутизацией сообщений"; Z-Wave. Протокол также позволяет организовывать mesh-топологию с маршрутизацией сообщений; Bluetooth LE. Спецификация ядра Bluetooth с низким энергопотреблением. На самом деле BLE позволяет также реализовать двусторонний обмен данными, при этом минимально за более короткий промежуток времени, чем стандартный Bluetooth (100 мс против 3 мс). При этом пропускная способность BLE ниже (0.27 Mbps против 0.7-2.1 Mbps стандартного Bluetooth). Вопрос безопасности при одностороннем обмене для всех этих упомянутых технологий интересно рассмотрен тут: Krejčí, R., Hujňák, O., & Švepeš, M. (2017, November). Security survey of the IoT wireless protocols. In 2017 25th Telecommunication Forum (TELFOR) (pp. 14).  Еще один вариант одностороннего обмена - генерация и считывание QR-кода. Этот способ, на мой взгляд, уже сейчас действительно часто можно встретить в кастомных мобильных приложениях, поэтому не буду подробно на нем останавливаться. Для двустороннего обмена информацией между устройствами можно использовать следующие технологии: Bluetooth; Wi-Fi Direct (peer-to-peer); NFC. С прикладной точки зрения эти технологии можно сравнить, например, следующим образом: Название стандарта  Радиус действия Скорость передачи    данных Wi-fi direct 1000 m < 250 Mbps Bluetooth 10 - 100 m Зависит от   версии. Ограничения  разнятся от 721 kbps до 24 Mbps NFC 4 - 10 cm 106 - 424   kbps Вопрос защиты информации и, в частности, криптографической защиты приложений для каждого из этих способов является очень интересным, но, к сожалению, я не специалист в части ИБ и не могу качественно его рассмотреть. Поэтому этот аспект не в фокусе данной статьи. Недавно мы столкнулись с необходимостью передачи данных в офлайне и из всех возможных способов выбрали NFC. Основным критерием была скорее привычность использования для пользователя в нужных нам сценариях и то, что нам требовалась передача только на короткие расстояния достаточно небольших объемов данных. С учетом опыта применения на практике, мне хочется еще раз перечислить аспекты, с которыми мы столкнулись на практике: 1) получить доступ к двустороннему NFC-обмену в iOS сложно; в Android это возможно, но дальше мы сталкиваемся со следующими проблемами:  1.1) у разных производителей работа NFC сильно разнится. Притом проблемы возникают и с протоколом, и с самими устройствами; 1.2) сложность с самими устройствами в том, что антенна NFC может быть расположена в каком-то совершенно непредсказуемом месте. И пользователю будет просто неудобно проводить операцию на устройстве. Поэтому советую учитывать этот факт и продумывать UX с его учетом;  2) передача данных по NFC все-таки медленная. У него есть ограничения по объему сообщений (см. таблицу выше), которые обязательно надо учитывать при разработке; 3) диапазон NFC сильно ограничен, поэтому устройства приходится подносить друг к другу достаточно близко. Это тоже нюанс для учета при проектировании UX. Для решения наших задач опыт использования был позитивный, но экстраполировать его сложно, так как всё всегда зависит от конкретной задачи и цели. Интересно, что у меня в сознании есть некоторые стереотипы о каждом из методов двустороннего обмена выше: Bluetooth - для носимых устройств, NFC - для оплаты картами, Wi-fi direct - для обмена между устройствами средствами производителей (AirDrop, Nearby, подключения к телевизорам и РС). При этом, если говорить о разработке именно кастомных приложений, работа в офлайне и использование каждого из этих методов встречается как-то нечасто. В основном я как пользователь сталкиваюсь с возможностью что-то передать только по AirDrop, но это обычно как вспомогательная функция приложения, на которой не построена основная пользовательская история. В связи с этим у меня непроизвольно возникает вопрос: Интересно развитие офлайна и способов передачи в нем с учетом все большего развития домашней автоматизации, блокчейнов и криптовалют.  Если с развитием домашней автоматизации изменения в сфере беспроводных сетей уже заметны (появились и стали широко распространены ZigBee, Z-Wave, BLE и другие виды), то передача подписанных документов и транзакций в офлайне пока кажется малоизученной. Думаю, что это направление должно оперативно развиваться, и недалека перспектива, когда мы окончательно отойдем от бумажных документов и документооборота, а наличные бумажные и металлические деньги будут заменены цифровой валютой. И это будет очень интересно увидеть. Буду рада обсудить возможности развития офлайна и его применение в комментариях. 🙂 Аналитик