Об альтернативной модели отметки местоположения в социальных сетях

Об альтернативной модели отметки местоположения в социальных сетях

Д.Е. Намиот, И.П. Макарычев,

Аннотация—В работе рассматривается реализация одного подхода к альтернативному представлению информации о местоположении в социальных сетях. Классическая модель состоит в размещении записи (сообщения) с указанием некоторого реального или виртуального места, которое описывается парой географических координат. Далее, используя API социальных сетей, пользователь может получить список представителей своего социального круга, которые находятся в данном месте или поблизости. Для бизнес-приложений такие отметки о местоположении служат основой для формирования предложений о предоставлении услуг. В данной работе рассматривается подход на основе информации о сетевой близости, когда данные передаются непосредственно мобильным пользователям, находящимся поблизости. При этом полностью исключается работа с геокоординатами, а также необходимость сохранять данные о местоположении в стороннем хранилище. При данном подходе не информация о местоположении сохраняется в социальной сети, а данные о социальной сети (ссылка на профиль) непосредственно передаются другим находящимся поблизости пользователям. Такой подход решает сразу несколько проблем - от безопасности до масштабирования. В данной работе рассматривается реализация такой модели для социальной сети ВКонтакте.

Ключевые слова — сетевая близость, геоинформационные приложения.

I. Введение

В основании этой статьи положена выпускная квалификационная работа, выполненная одним из авторов на факультете ВМК МГУ имени М.В. Ломоносова.

В работе рассматривается задача обмена информацией о местоположении в социальных сетях. Классический подход состоит в том, что пользователь размещает в социальной сети сообщение (пост, статус), которое явно или косвенно содержит указание на местоположение (указание места). А само определение этого места уже содержит гео-координаты (широта и долгота). При этом такое "место" может быть привязано к реальному объекту (например, учебный корпус в университете), а может быть и виртуальным (например, "пробка на Ленинградском шоссе). Такого рода записи еще иногда называются "check-in" (от одной из первых

Статья получена 10 декабря 2019.

Д.Е. Намиот - МГУ им. М.В. Ломоносова (e-mail: dnamiot@gmail .com).

И.П. Макарычев - выпускник ВМК МГУ им. М.В. Ломоносова (email: makyvan@yandex.ru).

социальных сетей Foursquare) [1]. Далее, используя API социальных сетей можно получить информацию о других пользователях, которые находятся здесь же или поблизости. С учетом социального круга эта информация может быть выдана пользователям для того, чтобы интенсифицировать реальные контакты. А для самой социальной сети такого рода записи это важный инструмент анализа поведения пользователей и, в конечном счете, способ сформировать рекламные предложения услуг (сервисов) [2]. В настоящее время проникновение смартфонов с поддержкой систем глобального позиционирования (GPS) обеспечило очень широкое использование геолокации в социальных сетях. Соответственно, большое внимание уделяется и анализу этой информации [3,4].

В настоящей работе используется другой (отличный от использования GPS) механизм представления информации о местоположении в социальных сетях. Это подход, основанный на использовании понятия сетевой близости, который позволяет полностью отказаться от использования гео-координат [5,6].

Концепция сетевой близости может как заменять глобальное геопозиционирование, так и привносить новые аспекты во взаимодействие пользователя с самим приложением и с окружающими его людьми и объектами. Мобильные приложения, основанные на концепции сетевой близости, используются в разных областях деятельности, начиная от медицины и образования и заканчивая торговлей и сферой развлечений. В рамках работы было создано и доведено до практической реализации мобильное приложение [7], использующее концепцию сетевой близости. Разработанное приложение переводит идентификатор социальной сети в идентификатор персонального мобильного тега, за счет чего происходит расширение виртуальной социальной сети в физическом пространстве [8].

Оставшаяся часть статьи структурирована следующим образом. В разделе II кратко излагается модель сетевой близости. В разделе III приводится список схожих работ. Раздел IV содержит собственно описание приложения.

II. О СЕТЕВОЙ БЛИЗОСТИ

Собственно термин "сетевая близость" используется в разных интерпретациях. Для сетей (TCP/IP, например) -это количество узлов, которые необходимо преодолеть пакету на своем пути от источника к конечной точке. Ключевой момент в таком определении - это

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

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

Близость - это мера, связанная с расстоянием. Мы можем измерить координаты двух объектов, вычислить расстояние между ними и сравнить его с некоторым пороговым значением. Если расстояние меньше заданного порога - объекты находятся близко друг от друга. А сетевая близость дает возможность ответить на вопрос близко или нет без получения координат и геовычислений. В предположении, что один из объектов определяется узлом беспроводной сети, получение его сигнала и означает близость. Расстояние (порог), естественно, зависит от сети (так называемое Bluetooth-расстояние или Wi-Fi расстояние). Отметим сразу два момента. Во-первых, такая беспроводная точка не обязательно должна быть, например, существующей точкой доступа Wi-Fi. Она может быть создана специально именно для измерения близости. В том числе, такая точка может создаваться динамически. Во-вторых, нигде выше не говорилось об установлении соединения с такой беспроводной сетью. Предложенный подход работает именно в connectivity-less mode (режиме без соединения). Причина одна - безопасность. Прямое соединение в такого рода системах - это соединение с неизвестным устройством, что справедливо является одной из самых больших проблем с точки зрения кибербезопасности.

Почему вообще возникает идея отказа от геовычислений? Здесь ответ, на самом деле, очевиден. Популярность систем с использованием информации о местоположении связана с широким распространением GPS. На сегодняшний день - это все смартфоны (практически - все мобильные телефоны). Соответственно, проблемы с гео-вычислениями будут там, где есть проблемы с использованием GPS. Здесь достаточно упомянуть хотя бы два момента: позиционирование в помещении [9], где пользователи мобильной связи проводят 80% времени и подвижные объекты [10]. В последнем случае имеется в виду, например, нахождение пользователя в мобильном объекте. Его координаты постоянно меняются. Но, например, вагон метро в Москве - это одна или две точки доступа Wi-Fi, мультимедийная панель автомобиля - это точка Bluetooth и т.д. По близости к этим беспроводным узлам мы можем определить нахождение пользователя.

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

(представления). Например, получение имени беспроводного узла. А такая информация может задаваться и читаться (обрабатываться) программно. Это означает, что получение идентификации беспроводного узла (фиксация близости) одновременно может быть использовано и для получения какой-либо информации от этого беспроводного узла. И это опять-таки осуществляется без установления соединения. Это понятно даже на пользовательском уровне - просмотр доступных узлов Wi-Fi, например, не предполагает соединения с ними. Соответственно, если в классической модели гео-информационных систем координаты, полученные на устройстве передаются на сервер для использования в запросах на получение связанных данных, то при сетевой близости таковой сервер может отсутствовать. Информация может быть передана от узла к узлу при определении близости. Последнее свойство и будет использовано при реализации сервиса.

Говоря о беспроводных сетях, которые здесь могут использоваться, можно отметить следующее. Технологию NFC мы не рассматриваем здесь из-за того, что ее применение в публичных сервисах имеет физическое ограничение - устройства должны быть размещены очень близко друг к другу. Относительно Bluetooth и Wi-Fi можно отметить следующее.

Спецификация Bluetooth предусматривает два основных протокола: Basic Rate / Enhanced Data Rate (BR/EDR, так называемый «классический» Bluetooth) и Bluetooth Low Energy (BLE, ранее известный как Bluetooth Smart) [11]. Протокол BR/EDR построен на 79 каналах, с индексами от 0 до 78, покрывающих диапазон 2400 ~ 2483.5 МГц. BR/EDR требует постоянного установленного соединения. Используется, в первую очередь, для передачи файлов, аудио и видео потоков. Протокол BLE построен на 40 каналах, с индексами от 0 до 39, покрывающих 2400 ~ 2483.5 МГц, причем индексы 37, 38 и 39 - это каналы адвертайзинга (рис. 1). BLE не требует обязательного установления соединения и используется для различных датчиков, маячков и прочих небольших устройств, ограниченных по энергопотреблению.

3! О 1 2 3 1 S Í 7 M 10 3! 11 12 131t 1! 16 17 11 15 70 21 22 23 74 2S » 27 7! 2! 3d 31 37 33 34

2401 2410 2470 243« 2(40 7450 2460 7470

FrçqpcytMHzl

Рис. 1. 40 каналов BLE и 3 наиболее часто используемых канала Wi-Fi [12].

Протокол BR/EDR предполагает следующие процедуры:

1) Процедура запроса или обнаружения;

2) Процедура установления соединения;

3) Процедура переключения ролей.

Протокол BLE предполагает следующие процедуры: 1) Процедура фильтрации устройств;

2) Процедура адвертайзинга;

3) Процедура сканирования;

4) Процедура обнаружения;

5) Процедура установления связи;

6) Периодический адвертайзинг;

7) Процедура синхронизации периодического адвертайзинга.

A. Возможности протокола BR/EDR по передаче данных без установления соединения

В протоколе BR/EDR единственной процедурой, которая может позволять передачу данных без установленного соединения, является процедура запроса. Она используется устройством, чтобы обнаружить близлежащие устройства или чтобы стать обнаруживаемым другими устройствами. Устройство, которое пытается разыскать другие устройства, активно посылает запросы. Устройства, которые могут быть обнаружены, прослушивают запросы от запрашивающего устройства и посылают ответы на запросы. Для этой процедуры используется специальный канал.

Возможность передать произвольную информацию без установленного соединения существует только при использовании расширенного ответа на запрос (Extended Inquiry Response, EIR). EIR позволяет передать такую информацию, как имя устройства, список поддерживаемых сервисов, данные производителя и т.д. Без использования расширенного ответа эту информацию, как и любую другую, можно передать только после установления соединения. После получения запроса обнаруживаемое устройство отправляет ответ (пакет типа FHS), содержащий адрес устройства (BD_ADDR) и другие параметры. Если обнаруживаемое устройство имеет ненулевые данные для отправки в расширенном ответе, оно посылает пакет с EIR после пакета FHS.

Размер данных расширенного ответа на запрос составляет 240 байт. Значимая часть данных содержит последовательность структур данных. Каждая структура должна содержать поле размера 1 байт, хранящее длину данных L, и поле данных размера L байт. Первые n байт поля данных содержат тип данных расширенного ответа. Содержимое оставшихся L - n байт определяется типом данных EIR и называется данными EIR. Неиспользуемая (незначимая) часть из 240 байт заполняется нулями.

Наиболее экономичным способом передать произвольную информацию в EIR является использование структуры «имя устройства» в качестве носителя информации. При использовании имени устройства из 240 байт 1 байт отводится для длины данных, еще 1 байт - для типа данных, оставшиеся 238 байт могут быть заняты именем устройства и таким образом использованы для передачи данных.

B. Использование Android API для задания имени устройства

Android API позволяет задать произвольное имя

устройства. Согласно спецификации Bluetooth, валидное имя устройства - это последовательность символов длиной максимум 248 байт, закодированных в кодировке UTF-8. Таким образом, полное имя устройства может превышать размер пакета EIR. В этом случае в EIR будет передано столько последовательных символов имени, сколько уместится в пакет.

Для того, чтобы задать имя устройства через Android API [13], необходимо получить экземпляр BluetoothAdapter и вызвать у него метод setName(String name) :

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

bluetoothAdapter.setName("NewDeviceNam e");

Bluetooth должен быть в состоянии STATE_ON для успешного выполнения этого метода. Установка имени устройства требует разрешения BLUETOOTH_ADMIN.

EIR появился в спецификации Bluetooth 2.1. Android API поддерживает эту спецификацию начиная с версии 5, таким образом, следует ожидать, что практически любое устройство на ОС Android будет поддерживать данный способ передачи сообщений.

C. Возможности протокола BLE по передаче данных без установления соединения

Основным способом реализации возможностей по передаче данных без установления соединения в протоколе BLE является процедура адвертайзинга. В данной процедуре устройство-адвертайзер транслирует другим устройствам информацию без установления соединения с прослушивающими устройствами. Эта процедура может быть использована, чтобы установить соединения с близлежащими устройствами или чтобы периодически отправлять данные устройствам, прослушивающим канал адвертайзинга. Начиная с версии Bluetooth 5, если данные для адвертайзинга не умещаются в один пакет, процедура использует вторичный канал для рассылки последовательности пакетов, так чтобы можно было отправлять данные, не умещающиеся в один пакет. Вторичный канал использует 37 каналов, которые раньше были зарезервированы исключительно для передачи данных в установленном соединении. При этом, устройство-адвертайзер может не разрешать установление с ним соединения. Устройство может также отправлять пакеты с данными для адвертайзинга уже будучи соединенным с каким-либо устройством.

Существует также процедура сканирования, в ходе которой сканирующие устройства отправляют специальные запросы, на которые устройство-адвертайзер должно отправить ответ. Сканирующее устройство может запрашивать дополнительную информацию.

Процедура обнаружения состоит из процедур адвертайзинга и сканирования. Эта процедура асимметрична. Устройство, которое пытается

обнаружить другие устройства, известно как обнаруживающее устройство. Оно прослушивает устройства, которые рассылают в канал адвертайзинга сканируемые (scannable) события адвертайзинга. Как обнаруживающее, так и обнаруживаемое устройства могут уже быть связанными с другими устройствами. Использование сканирующим устройством процедуры фильтрации может привести к тому, что оно обнаружит не все устройства в своем окружении.

Данные адвертайзинга и скан-ответа содержат значимую и незначимую части. Значимая часть состоит из последовательности структур AD. Каждая структура AD имеет поле Length размера 1 байт и поле Data размера Length байт. Первый байт поля Data содержит тип AD. Содержимое оставшегося места зависит от типа данных и назвается данными AD. Незначимая часть заполнена нулями.

Спецификация Bluetooth 4.0, в которой появился протокол BLE, предусматривает размер 31 байт под данные адвертайзинга и еще 31 байт под ответ на скан-запрос. По 2 байта должны быть отведены под размер и тип данных. Таким образом, под сообщение остается 58 байт. В спецификации Bluetooth 5 количество информации, которое можно передать в процедуре адвертайзинга, было увеличено до 254 байт.

D. Использование Android API для установления

данных адвертайзинга

Спецификация BLE поддерживается версией Android 4.3 (API level 18). Эта версия API доступна на почти 97% Android устройств. Bluetooth 5.0 появился в Android 8.0 Oreo - это 21,5% устройств [14].

Для того, чтобы начать адвертайзинг в Android API, нужно получить экземпляр BluetoothLeAdvertiser (появился в API level 21) и вызвать у него метод startAdvertising(AdvertiseSettings settings, AdvertiseData advertiseData, AdvertiseData scanResponse,

AdvertiseCallback callback):

BluetoothLeAdvertiser advertiser = BluetoothAdapter.getBluetoothLeAdvertise r();

advertiser.startAdvertising(settings, advertiseData, scanResponse, callback);

Bluetooth должен быть включен, устройство должно поддерживать BLE (проверяется методом isMultipleAdvertisementSupported()). Метод

startAdvertising требует разрешения

BLUETOOTH_ADMIN.

Для того, чтобы узнать, поддерживает ли устройство расширенный адвертайзинг, существует метод isLeExtendedAdvertisingSupported(). Метод

getLeMaximumAdvertisingDataLength() позволяет узнать максимальный размер передаваемых данных.

E. Сканирование Bluetooth-устройств через Android

API

Для обнаружения других Bluetooth-устройств с

использованием «классического» Bluetooth необходимо получить экземпляр BluetoothAdapter и вызвать у него метод startDiscoveryf):

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

bluetoothAdapter. startDiscovery();

Необходимо зарегистрировать обработчик события ACTION_FOUND для того, чтобы получить доступ к идентификатору найденного устройства.

При использовании BLE сканирование можно запустить при помощи метода startScan(ScanCallback callback), где callback - это обработчик события обнаружения устройства для получения доступа к результату сканирования:

BluetoothLeScanner scanner =

BluetoothAdapter.getBluetoothLeScanner() ; scanner.startScan(callback);

Начиная с версии Android 6.0, приложению для сканирования требуется разрешение на использование геопозиции устройства - ACCESS_FINE_LOCATION или ACCESS_COARSE_LOCATION [15].

F. Wi-Fi

Wi-Fi — технология беспроводной локальной сети на основе стандартов IEEE 802.11. Данный стандарт работает на частотах 2,4 (см. рис. 1) и 5 ГГц из диапазона частот ISM. Каждая точка доступа Wi-Fi использует определенный канал шириной по меньшей мере 20 МГц для передачи своего идентификатора сети (SSID). Идентификатор сети передается каждые 100 мс на скорости 0,1 Мбит/с в сигнальных пакетах [12]. Длина SSID составляет до 32 байт. Зная SSID сети, клиент может выяснить, возможно ли подключение к данной точке доступа. При попадании в зону действия двух точек доступа с идентичными SSID, приёмник может выбирать между ними на основании данных об уровне сигнала.

Расстояние, на которое действует сигнал Wi-Fi, зависит от версии протокола, частоты, мощности передатчика, антенны, наличия препятствий. В среднем, бытовые роутеры обеспечивают покрытие не более 2050 м внутри помещений и до 100-250 м на открытом пространстве [16]. Специальные станции могут распространять сигнал на расстояния до нескольких сотен километров [17].

Протокол Wi-Fi подходит также для создания ad hoc сетей [16]. В 2010 году появилась технология Wi-Fi Direct, позволяющая устройствам связываться напрямую, без маршрутизатора [18]. Таким образом, смартфон может стать точкой доступа Wi-Fi. Примерно 38% современных смартфонов поддерживают эту технологию [19].

В отличие от Bluetooth, Wi-Fi работает быстрее и на большие расстояния, но потребляет больше энергии [16]. За редкими исключениями, все современные

смартфоны оснащены Wi-Fi модулем [19]. Для передачи данных без установления соединения больше подходит Bluetooth, т.к. SSID имеет длину максимум 32 байт.

G. Wi-Fi Direct

Wi-Fi Direct - это технология, позволяющая устройствам, поддерживающим Wi-Fi, соединяться по сети напрямую, без участия маршрутизатора, без наличия поблизости сети Wi-Fi и без доступа к сети Интернет [19]. Устройства, поддерживающие Wi-Fi Direct, называются P2P устройствами. Для быстрого поиска P2P устройств и установления с ними соединения существует процедура обнаружения P2P устройств, которая включает в себя следующие компоненты: обнаружение устройств, обнаружение сервисов, формирование группы, P2P приглашение. В процессе обнаружения устройств два P2P устройства переходят на общий канал и обмениваются информацией об устройствах (например, имя устройства и тип устройства). Обнаружение сервисов - это опциональная процедура, позволяющая устройству обнаружить доступные сервисы более высокого уровня прежде, чем установить соединение. В процессе формирования группы определяется, какое из устройств будет выполнять роль владельца P2P группы, и создается новая P2P группа. P2P приглашение используется группой для приглашения P2P устройства присоединиться к существующей группе [20].

Процедура обнаружения устройств служит для быстрого поиска устройств и определения, с каким из устройств следует попытаться установить соединение. Процедура состоит из двух основных фаз: сканирование и поиск. В процедуре используются фреймы пробного запроса (probe request) и пробного ответа (probe response). Для того, чтобы стать обнаруживаемым, устройство должно перейти в состояние прослушивания. Для этого оно должно прослушивать канал прослушивания, который выбирается из так называемых социальных каналов. Социальными каналами являются каналы 1, 6 и 11 из полосы 2,4 ГГц. Прослушивающее устройство должно отвечать на пробный запрос, если в качестве адресата в таком запросе указан либо широковещательный адрес, либо адрес данного устройства. В конец пробного ответа устройство может включить информационный элемент Wi-Fi Simple Configuration (WSC IE), содержащий воспринимаемую человеком специфичную для данного устройства информацию.

Во время фазы сканирования устройство собирает информацию обо всех окружающих устройствах и сетях путём сканирования всех поддерживаемых каналов. Во время сканирования устройство не отвечает на пробные запросы. В фазе поиска устройство посылает пробные запросы последовательно в каждый социальный канал. После фазы поиска устройство переходит в состояние прослушивания (рис. 2). Возможность того, что два устройства в конце концов обнаружат друг друга, обеспечивается тем, что время, которое устройство

проводит в состоянии прослушивания каждый раз выбирается случайным образом, поэтому существует ненулевая вероятность того, что одно устройство отправит в один из социальных каналов пробный запрос в то время, пока другое устройство прослушивает этот канал.

SMEMfipticaienr |-1 -1 SM

User/Vendor 1 Р2Р Device 1 Р2Р Device 2 U-

Discover other P2P Devices Optional WSC Provisioning Command

scan

0

802.11 Scan

Listen State for N

*

Э

Я fi

search I g

Probe Request (P2P IE. WSC IE. RSN IE. Supported Regulatory IE) *

Probe Request (P2P IE, WSC IE, RSN |

IE. Supported Regulatory IE)  D

Probe Response (P2P IE, WSC IE, RSN l£ g

Supported Regulatory Class IE)

Probe Request (P2P IE. WSC IE.

S Ц RSN IE. Supported Regulatory IÊ )

listen

Рис. 2. Пример процедуры обнаружения устройств Wi-Fi Direct [20].

После обнаружения устройства перед установлением соединения может быть выполнена процедура обнаружения сервисов. Эта процедура служит для обнаружения сервисов, предоставляемых обнаруженным устройством. Протокол расширяемый и может служить основой для протоколов более высокого уровня, таких как Bonjour и UPnP [20]. При помощи этой процедуры можно получить список всех предоставляемых устройством сервисов, информацию о единственном предоставляемом сервисе, информацию о множестве предоставляемых сервисов и информацию об изменениях в предоставляемых сервисах.

Таким образом, для передачи пользовательской информации без установления соединения посредством Wi-Fi Direct может быть использован пробный ответ или ответ на запрос обнаружения сервисов. В настоящий момент на платформе Android невозможно использовать данные функции. Так, например, существуют примеры использования имени Wi-Fi Direct устройства для передачи заданной пользователем информации, но они используют приватный API при помощи Reflection [21]. Приватный API не должен использоваться разработчиками приложений, он может измениться или перестать работать в новых версиях операционной системы [22].

III. Анализ существующих работ

Область, которую мы рассматриваем в данной статье, относится к так называемым контекстно-зависимым приложениям. К контексту принято относить любые измеряемые характеристики окружения, сотстояния и

Decove« other Р2Р Devices Optional WSC Provisioning Command

поведения пользователя (мобильного устройства), которые могут быть добавлены к местоположению [23]. Соответственно, характеристики доступных

беспроводных сетей - это типичный пример контекста.

Как отмечалось выше, классическая модель работы мобильных приложений, которые используют информацию о позиционировании, состоит в отправке полученных на клиентской стороне данных на сервер для последующей обработки [24, 25, 26]. Отказ от серверной инфраструктуры в предлагаемом подходе явным образом обеспечивает приватность. В данном случае, например, рассылка профиля в социальной сети будет доступна только тем мобильным абонентам, которые в данный момент времени видят (могут видеть) владельца профиля. А какая-либо история таких рассылок просто отсутствует.

Компания Facebook подала заявку на патент [27] на способ предсказания местоположения пользователя социальной сети по данным о сигналах беспроводных сетей (Wi-Fi, Bluetooth, сотовых сетей и NFC). Суть способа состоит в том, что приложение, установленное на устройстве пользователя и связанное с аккаунтом пользователя в социальной сети, в фоновом режиме собирает данные о сигналах беспроводных сетей, получаемых устройством, и отправляет их на удаленный сервер вместе с геопозицией устройства. Сервер собирает эти данные в базу и проводит корреляции между идентификаторами сетей и геопозицией устройства. Таким образом, имея базу идентификаторов сетей и их геопозиций, можно определять местоположение другого устройства, которое также отправляет в фоновом режиме идентификаторы беспроводных сетей. Это позволит определять местоположение устройств пользователей, которые запретили приложению социальной сети доступ к геопозиции. В заявке предполагается, что к местоположению можно будет привязывать лейблы, события или социальные действия. Как видно, здесь опять присутствует центральное хранилище.

Наиболее очевидным способом применения сетевой близости является использование системы навигации внутри помещений. Как правило, инфраструктура для таких систем создается специально. Для этих целей хорошо подходят Bluetooth-маячки, работающие по протоколу BLE. Эти маячки имеют компактные размеры и способны к длительной автономной работе [25], система из таких маячков позволяет определять местоположение с точностью до 1-2 м [28]. Маячки размещаются на стационарных позициях внутри помещения, их координаты заносятся в базу данных. Мобильное приложение сканирует находящиеся в пределах сетевой близости маячки и отправляет эту информацию на сервер, где происходит вычисление координат устройства, либо вычисление местоположения происходит на самом устройстве по заранее загруженной карте маячков. Существуют различные техники для вычисления местоположения по сигналам беспроводных сетей: простая замена концепции местоположения концепцией близости [29], трилатерация [25, 30] и фингерпринтинг [30]. Помимо

использования BLE для определения местоположения можно использовать другие технологии. Использование сигналов сетей Wi-Fi позволяет определять местоположение с точностью до нескольких десятков метров [12]. В целом, вопрос использования сигналов беспроводных сетей для определения местоположения устройства является достаточно хорошо проработанным [12].

Контексто-зависимые приложения, основанные на сетевой близости, используются в маркетинге для доставки на устройство пользователя рекламных сообщений, привязанных к местоположению [31, 32]. В работе [31] представлена система для рекламы в торговых центрах, основанная на сетевой близости. Специальное приложение, устанавливаемое на смартфон посетителя торгового центра, сканирует Bluetooth-теги, привязанные к магазинам торгового центра. По силе сигнала (RSSI) приложение выбирает ближайший магазин, соединяется с Bluetooth-устройством этого магазина и загружает с этого устройства рекламу, которую отображает пользователю. Здесь необходимо отметить два момента: во-первых, зависимость силы сигнала от расстояния не всегда такая простая, во-вторых, и это главное, здесь речь идет опять-таки о соединении.

Здесь можем также сослаться на наши собственные работы. В работе [33] предлагается модель Bluetooth Data Points, не требующая установления соединения с Bluetooth-устройством - контент, привязанный к идентификатору Bluetooth-устройства, хранится в сети Интернет, а факт обнаружения узла Bluetooth является триггером для того, чтобы приложение запросило и отобразило этот контент. В качестве узла Bluetooth, к идентификатору которого привязывается контент, в такой системе может выступать обычный мобильный телефон. В работе [34] предложено привязывать правила доставки сообщений не только к отдельным Bluetooth-тегам, но и к слепкам, содержащим список одновременно обнаруженных Bluetooth-устройств и дополнительную контекстную информацию. При срабатывании правила на устройство пользователя отправляется push-уведомление, содержащее как сам контент, так и указание на способ обработки данного контента. Аналогичные системы можно строить на базе точек доступа Wi-Fi. Так, в работе [34] предложен сервис SpotEx, который по слепкам обнаруженных точек доступа Wi-Fi на основе заложенных в нем правил отправляет мобильному приложению локально-значимую информацию. Перечисленные системы можно использовать не только в розничной торговле, но и в других сферах, создавая сервисы, основанные на местоположении.

Сетевая близость также используется для подтверждения нахождения пользователя в той или иной локации, как это делается в системах для контроля за посещаемостью занятий студентами [35, 36], разработанных для того, чтобы отмечать присутствие студента в конкретной аудитории в конкретное время.

Концепцию сетевой близости применяют для

создания мобильных интерфейсов к объектам физического мира. Так, компания Google на основе протокола BLE разрабатывает Physical Web [37] -технологию для создания web-интерфейса к объектам физического мира.

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

Прикрепленные к товарам или полкам магазина NFC-теги могут содержать идентификатор товара. Специальное мобильное приложение считывает идентификатор товара и запрашивает информацию о нем (цена, остаток на складе) у сервера, который связан с ERP-системой продавца.

Производители товаров встраивают в свою продукцию Bluetooth или NFC теги, чтобы предоставлять сервисы, связанные с продуктами [38, 39].

Сетевая близость позволяет не только создавать интерфейсы к физическим объектам, но и исследовать характер взаимодействия пользователя с объектом. Примером может служить игра, которая помогает улучшать показатели по использованию средств для гигиены рук в поликлиниках и больницах [40]. Маячки BLE размещаются на средствах дезинфекции рук. Близость персонала определяется по силе сигнала, использование средства определяется встроенным акселерометром. Средства дезинфекции превращаются в умные объекты. Идентификатор сети позволяет различать различные объекты, т.к. разные объекты требуют разного времени взаимодействия. Приложение умеет отличать, взаимодействовал ли пользователь с объектом достаточное время для дезинфекции. Приложение отправляет анонимизированные данные на удаленный сервер для сбора статистики и ведения рейтинга.

Контекстом мобильного приложения могут служить и окружающие люди. Многие социальные сети используют данные о геопозиции пользователя для показа ему друзей или возможных знакомых, находящихся поблизости [41, 42, 43], интересных событий, публикаций и фотографий, привязанных к местоположению [44, 45], геотаргетированной рекламы [46]. Выделяется особый тип социальных сетей -геосоциальные сети [47], или социальные сети, основанные на местоположении [48]. В настоящее время эти приложения используют GPS данные мобильного устройства и требуют доступа к геопозиции устройства.

В работе [34] предложено использовать сетевую близость для поиска новых друзей в социальных сетях. Компания Facebook запатентовала статистики для получения поведенческих паттернов пользователя по данным о его местоположении [49], в частности, для составления рекомендаций по добавлению в друзья. Та

же компания подала заявку на патент способа предсказания местоположения пользователей социальных сетей по сигналам беспроводных сетей.

В работе [50] описан сервис Serendipity. Мобильное приложение BlueAware, установленное на устройстве пользователя, в фоновом режиме сканирует находящиеся поблизости Bluetooth-устройства и ведет лог их уникальных идентификаторов. При нахождении ранее неизвестного устройства BlueAware отправляет его идентификатор на сервер Serendipity. Также разработано специальное устройство BlueDar, которое также сканирует устройства, находящиеся с ним в состоянии сетевой близости, и отправляет их идентификаторы на сервер. Центральный сервер Serendipity хранит анкеты пользователей, привязанные к идентификаторам. При получении очередного идентификатора от мобильного приложения он находит анкету по идентификатору и рассчитывает сходство между двумя пользователями по их анкетам по определенным метрикам. Если сходство превышает заданное значение, сервер отправляет уведомление двум пользователям о том, что поблизости найден человек со схожими интересами.

В работе [51] рассказывается о протоколе WhozThat и построенном на его основе прототипе мобильного приложения для платформы JME. Протокол позволяет мобильным устройствам обмениваться

идентификаторами пользователей социальных сетей Facebook, MySpace и Linkedln посредством Bluetooth. Получив идентификатор, приложение запрашивает информацию о пользователе по его идентификатору у сервера социальной сети и отображает эту информацию на экране. Описана возможность обмена между устройствами списками найденных идентификаторов с тем, чтобы расширить радиус охвата поиска людей вокруг. На базе этого протокола также описан контексто-зависимый музыкальный автомат, который по идентификаторам находящихся поблизости

пользователей социальных сетей получает при помощи API социальной сети сведения о музыкальных предпочтениях пользователей и составляет плейлисты на их основе.

В работе [21] описывается приложение OffAT - чат, не требующий доступа к сети Интернет, основанный на идее сетевой близости и использующий технологию Wi-Fi Direct. В данном приложении пользователь вводит свое имя и список ключевых слов, характеризующих его интересы. Пользовательская информация

распространяется на другие находящиеся поблизости устройства через имя Wi-Fi устройства владельца. Приложение находит других пользователей и отображает их имена и список интересов. Пользователь может выбрать человека с общими интересами и начать с ним чат.

IV. О ПРИЛОЖЕНИИ Proximity App

Приложение, рассматриваемое в данной работе использует сетевую близость для распространения социального контекста. Для того чтобы узнать, кто

находится рядом, не обязательно нужно узнавать точные координаты каждого человека, отправлять эти данные на удаленный сервер, где производить вычисления с использованием API социальных сетей. Для решения этой задачи может быть достаточно просканировать находящиеся поблизости мобильные устройства. Если существует способ по идентификатору устройства определить его владельца, то задача будет решенной. Например, можно было бы создать хранилище типа «ключ-значение», в которой ключом был бы идентификатор устройства, а значением -идентификатор владельца в социальной сети. Тогда при обнаружении очередного устройства можно было бы запросить идентификатор владельца в хранилище, а затем по идентификатору получить профиль пользователя в социальной сети. Задача решается еще проще, если идентификатор устройства задать равным идентификатору пользователя социальной сети - в этом случае отпадает необходимость в промежуточном хранилище.

Такой подход, использующий одновременно контекст местоположения и социальный контекст, позволит перенести виртуальную социальную сеть в физический мир и создаст новые способы взаимодействия пользователя с социальной сетью и окружающими людьми. В настоящее время социальные сети не используют такой подход, хотя, возможно, этого следует ожидать от компании Facebook в связи с тем, что она подала заявку на патент на способ определения местоположения пользователя по сигналам беспроводных сетей. Существуют отдельные примеры применения этого подхода. В работе [21] описан протокол обмена пользовательской информацией, но отсутствует интеграция с существующими распространенными социальными сетями, а также используется приватный API Android, не предназначенный для сторонних разработчиков. В работе [50] также нет интеграции с существующими распространенными социальными сетями. В работе [51] есть интеграция с распространенными социальными сетями, разработан прототип приложения, но нет описания протокола обмена идентификаторами социальных сетей. В рамках выпускной квалификационной работы И.П. Макарычевым разработано и доведено до практической реализации мобильное приложение «Network Proximity App» с открытым исходным кодом, интегрированное с распространенной социальной сетью. Исходный код приложения опубликован на сайте gitlab.com [7].

A. Схема работы приложения

Приложение «Network Proximity App» разработано под мобильную платформу Android и написано на языке программирования Java. Мобильная платформа Android была выбрана потому, что она является наиболее распространенной мобильной платформой в мире, а также является весьма дружественной для разработчиков в плане работы с сенсорами.

Первым шагом работы пользователя с приложением,

как показано на схеме (рис. 3), является авторизация пользователя в социальной сети под своим аккаунтом. Авторизация происходит либо через установленное на устройстве пользователя мобильное приложение социальной сети, либо через открытую в браузере форму авторизации. В любом случае, пользователь не раскрывает нашему приложению свои авторизационные данные. Приложение получает только те данные, которые предоставляет социальная сеть. Необходимый минимум информации - это идентификатор пользователя, при помощи которого можно найти страницу пользователя в социальной сети. Наиболее популярная в мире социальная сеть Facebook по умолчанию предоставляет определенный набор сведений об авторизовавшемся пользователе, а именно идентификатор, имя, фамилию и фотографию пользователя. Однако идентификатор пользователя, передаваемый данной социальной сетью, является идентификатором только в данном приложении, и при помощи него нельзя найти страницу пользователя, что является главной информацией для нашего приложения. Чтобы получить ссылку на страницу пользователя в сети, необходимо пройти процедуру проверки приложения в компании Facebook.

Пользователь!

ID пользователя 1

ID ПОЛЬЭОБйтеЛЯ 2

Рис. 3. Схема работы приложения Network Proximity App.

Социальная сеть ВКонтакте, являющаяся наиболее популярной социальной сетью в РФ, предоставляет мобильному приложению идентификатор, при помощи которого можно сформировать URL страницы пользователя, а также токен, при помощи которого можно делать запросы к VK API и получать данные в формате JSON [52]. В нашем приложении используется социальная сеть ВКонтакте. В дальнейшем к приложению можно будет подключить другие социальные сети (например, Facebook, LinkedIn, Pinterest) и, возможно, сайты для поиска работы, и предоставлять пользователю выбор, при помощи какого сервиса авторизоваться в приложении.

С использованием VK Android SDK [52] авторизация производится вызовом статического метода:

VKSdk.login(Activity runningActivity, String... scope);

В результате запускается новая активность, в которой пользователь проходит авторизацию. Результат активности обрабатывается в методе onActivityResult:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if

(!VKSdk.onActivityResult(requestCode, resultCode, data, new

VKCallback<VKAccessToken>() {

@Override

public void onResult(final VKAccessToken res) {

userId = res.userId;

loadPrincipalInfo(userId);

setUpBluetooth(PREFIX

+ userId);

}

@Override

public void

onError(VKError error) {

}

})) {

super.onActivityResult(requestCode,

resultCode, data);

}

}

Получив идентификатор или URL страницы пользователя, мобильное приложение может начинать адвертайзинг, то есть распространение данного идентификатора посредством той или иной технологии беспроводной связи. В нашем приложении мы используем «классический» Bluetooth, т.к. эта технология наиболее широко распространена в современных мобильных устройствах и полностью поддержана существующим API Android. Как показано выше, путем задания имени устройства можно передавать без установления соединения 238 байт полезной информации. Этого должно хватать для передачи идентификаторов или достаточно длинных URL, т.к. средняя длина URL в мире составляет 31,2 символа [53]. В дальнейшем технология может быть заменена на другую подходящую. Перспективным представляется сделать приложение полностью совместимым с Physical Web для расширения возможностей взаимодействия нашего приложения с другими приложениями, в частности, для отображения уведомлений о найденных людях в браузере Chrome. Однако это потребует использовать сервисы сокращения URL, т.к. под URL в протоколе Eddystone отводится всего 17 байт.

После того, как пользователь авторизовался под своим аккаунтом, приложение устанавливает имя Bluetooth-устройства:

setDeviceNameAndStartDiscovery(PREFIX + userId); Мы используем префикс, чтобы отличать идентификаторы, используемые нашим приложением, от обычных имен устройств. В дальнейшем, при подключении к приложению других социальных сетей префиксы будут также использоваться для отличия идентификаторов разных социальных сетей.

Для того, чтобы другие устройства могли обнаружить устройство пользователя, приложение переводит его в режим discoverable. В платформе Android это делается путем запроса пользователя:

private void enableDiscoverable() { Intent discoverableIntent = new

Intent(BluetoothAdapter.ACTION_REQUEST_D ISCOVERABLE);

discoverableIntent.putExtra(BluetoothAda pter.EXTRA_DISCOVERABLE_DURATION, 0);

startActivityForResult(discoverableInten t, REQUEST_ENABLE_BT_DISCOVERABLE); Log.i(TAG,

"enableDiscoverable");

}

При передаче в интент параметра BluetoothAdapter.EXTRA_DISCOVERABLE_DURATIO N равного 0, устройство становится видимым до тех пор, пока пользователь не выключит Bluetooth. Однако в последней версии Android, устройство не может быть сделано обнаруживаемым более чем на 300 секунд [54], поэтому, чтобы обеспечить возможность обнаружения устройства, пока пользователь работает с приложением, нужно при отключении режима discoverable просить пользователя включить этот режим снова, для чего используется приемник широковещательных событий системы:

private class ScanModeReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

int scanMode =

intent.getIntExtra(BluetoothAdapter.EXTR A_SCAN_MODE,-143);

if ( active &&

previousScanMode ==

BluetoothAdapter.SCAN_MODE_CONNECTABLE_D ISCOVERABLE

&&

turningOn.compareAndSet(false, true)) {

Log.i(TAG, "Need to enable discoverable");

enableDiscoverable();

}

if (scanMode ==

BluetoothAdapter.SCAN_MODE_CONNECTABLE_D ISCOVERABLE) {

}

previousScanMode =

scanMode;

}

}

Таким образом, когда имени устройства присваивается идентификатор пользователя и устройство становится обнаруживаемым, смартфон пользователя превращается в персональный Bluetoth тег

[33], при помощи которого пользователь сообщает окружающим о своем присутствии. Приложения, которые могут считать и понимают, как интерпретировать считанное имя устройства, могут отобразить информацию о том, что рядом находится пользователь с данным идентификатором.

Для того, чтобы считывать имена находящихся рядом устройств, после того, как пользователь авторизовался и получил токен для доступа к VK API, в нашем приложении включается режим обнаружения устройств:

private void

setDeviceNameAndStartDiscovery(String deviceName) {

bluetoothAdapter.setName(deviceName);

Log.i(TAG, "Set device name: " + deviceName);

if

(!bluetoothAdapter.startDiscovery()) {

Log.i(TAG, "Failed to start discovery");

} else {

Log.i(TAG, "Discovery

started");

}

}

При обнаружении очередного устройства, по регулярному выражению определяется, что имя устройства можно интерпретировать как идентификатор пользователя в социальной сети:

private final Pattern USER_ID_PATTERN = Pattern.compile(PREFIX + "\\d+");

private boolean isValidUserId(String id) {

return id != null &&

USER_ID_PATTERN.matcher(id).matches(); }

Если проверка вернула true, то проверяется, не был ли уже отображен данный пользователь. Если нет, то по полученному идентификатору приложение запрашивает профиль пользователя у сервера социальной сети ВКонтакте при помощи VK API:

if

(!alreadyAddedDeviceNameSet.contains(dev iceName)) {

alreadyAddedDeviceNameSet.add(deviceName );

addPerson(deviceName.substring(3));

}

private void addPerson(String

personId) {

VKRequest rq = VKApi.users

.get(VKParameters.from(VKApiConst.USER_I DS, personId, VKApiConst.FIELDS,

"career,photo_200"));

rq.executeWithListener(new VKRequest.VKRequestListener() {

@Override

public void

onComplete(VKResponse response) { }

@Override

public void

onError(VKError error) { }

});

}

Приложение отображает фотографию, имя и фамилию пользователя, а также место его работы и должность, если они заполнены. Данная информация представляется наиболее важной для профессиональных контактов - целевого использования разработанного приложения.

Фотографии загружаются при помощи свободной библиотеки Picasso, которую отличают удобная работа с виджетами и индикаторами загрузки при помощи цепочек вызовов методов, а также возможность кеширования загруженных фотографий в памяти устройства [55].

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

B. Сценарий использования

Приложение может быть использовано, например, на конференциях, выставках, ярмарках вакансий и тому подобных профессиональных мероприятиях. Пользователь запускает на своем смартфоне приложение и превращает свой смартфон в персональный тег. Другие участники конференции, запустив у себя на смартфонах приложение, смогут увидеть карточку пользователя в списке найденных поблизости пользователей. Нажав на карточку пользователя, участник конференции переходит на страничку пользователя в социальной сети, где он может начать общение с ним и добавить его в друзья.

C. Описание интерфейса

При запуске приложения оно предлагает пройти авторизацию в социальной сети ВКонтакте. Авторизация происходит либо через веб-форму, которая открывается в браузере (рис. 4), либо через установленное на смартфоне пользователя приложение ВКонтакте (рис. 5).

Рис. 4. Веб-форма авторизации ВКонтакте.

\к выйти "

Network Proximity App

запрашивает доступ к Вашему аккаунту

Приложению будут доступны:

информация страницы, доступ в любое время

< О  БЭ

Рис. 6. Запрос на предоставление доступа к данным аккаунта социальной сети.

Если пользователь отменяет авторизацию или не предоставляет разрешение на использование данных своего аккаунта, то пользователю отображается сообщение о том, что без авторизации работа приложения невозможна, и появляется кнопка «Login», нажав которую пользователь может повторить попытку авторизации.

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

Рис. 5. Авторизация через установленное приложение ВКонтакте

После того, как пользователь ввел верные данные, он должен разрешить приложению получить доступ к своему аккаунту. Это делается также при помощи виджета, который предоставляет VK Android SDK

(рис. 9).

sset « <§) J| 4S%É 1в:51

s

Запрос разрешения на включение Bluetooth

Приложение на вашем телефоне позволяет включить Bluetooth и сделать телефон видимым другими устройствам. Разрешить?

<3 О  БЭ

Рис. 7. Запрос разрешения на включение Bluetooth.

У ВС t » © CS) Jli'5%1 18:51 Network Proximity App

Иван Макарычев

/IV"

Рис. 9. Открытие страницы пользователя социальной сети.

ВОСМ  ^ 18 52

Network Proximity App

Иван Макарычев

шя Ирина Ишкова

mm Badoo

Павел Дуров

CEO - Telegram

<1 О  GS

Рис. 8. Отображение данных авторизовавшегося пользователя.

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

Ксения Макарычева

<1 О  ВЭ

Рис. 10. Список найденных персон.

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

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

персональной карточке напечатаны имя и фамилия пользователя, а также место работы и должность, если пользователь их указал. Также отображается фотография пользователя. Фотографии загружаются асинхронно, пока фотография не загрузилась, на ее месте отображается индикатор загрузки. Нажав на персональную карточку, пользователь может открыть страницу этого человека в браузере или приложении и написать этому человеку сообщение или добавить его в друзья.

D. Возможности дальнейшего развития

В текущей реализации приложение имеет законченный вид и полностью реализует предложенную схему. Приложение решает задачи переноса виртуальной социальной сети в физический мир устройств и обеспечения доступа мобильного приложения к социальному контексту. Можно предложить следующие дальнейшие пути развития приложения:

1) Расширение доступа приложения к социальному контексту;

2) Создание новых сервисов, основанных на социальном контексте;

3) Улучшения с точки зрения удобства использования.

В плане расширения доступа к социальному контексту

В рамках расширения доступа приложения к

социальному контексту имеет смысл добавить возможность авторизоваться в приложении из различных социальных сетей, таких как Facebook, LinkedIn, Pinterest и др. Это позволит расширить круг пользователей приложения. Также возможна реализация обмена между устройствами списками обнаруженных людей через удаленный сервер для более широкого охвата.

Если сделать реализацию полностью совместимой с технологией Physical Web, то это позволит охватить также пользователей, которые не устанавливали наше приложение, поскольку они будут получать уведомления об обнаруженных людях через браузер Chrome. Переход на технологию Physical Web не потребует изменения интерфейса приложения, но потребует изменить схему разворачивания приложения, т.к. придется применять сервисы для сокращения URL. Следует учитывать, что компания Google проксирует запросы по протоколу Physical Web, поэтому может по тем или иным причинам ограничивать доступ к сервису.

В текущей реализации приложение не использует собственного сервера, а использует только сервера социальной сети для получения необходимой информации. Можно создать собственный сервис, который будет принимать от пользователей списки идентификаторов пользователей, которые находятся поблизости, и анализировать активность этих пользователей в социальной сети - изменение статуса, появление новых публикаций и фотографий. Если пользователь социальной сети сообщает, что он находится в данный момент, например, на конференции, то можно предположить, что пользователи, находящиеся рядом с ним, также присутствуют на этой конференции.

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

Данная разработка была также представлена на конференции Ломоносовские чтения 2019 [56].

V. Заключение

В работе представлено мобильное приложение основанное на концепции сетевой близости, которое позволяет поделиться ссылкой на профиль в социальной сети с другими мобильными абонентами, находящимися поблизости. Непосредственное использование такого рода приложений - это расширение социальных сетей в физическом пространстве, представление пользователей (например, бэдж на конференции), дейтинг, поиск друзей и т.д. Естественно, что ссылка на профиль в сети ВКонтакте может быть заменена таковой же в Facebook, Linkedin. В принципе, здесь подойдет любой сервис с API для авторизации.

В более широком смысле, представленный сервис есть иллюстрация для использования подхода сетевой близости, когда фиксация факта близости совмещена с получением данных. Таким образом может распространяться любая "локальная" информация. Например, в плане тех же гипер-локальных сервисов распространяться может ссылка на Twitter или Телеграм-канал, где публикуются какие-то локальные новости, ссылки на купоны, которые получат только те потенциальные покупатели, которые находятся в данный момент близко от продавца и т.д. Можно представить такой сервис как аналог QR-кода, где отсутствует визуальная компонента и необходимость манипуляций с камерой. В B2B (B2C) приложениях так может распросраняться, например, какой-то JSON файл с описанием сервиса (загрузка автомобиля, описание услуги и т.п.).

В данном случае использовалась сеть Bluetooth. Основная причина - это возможность полной автоматизации, когда точка Bluetooth может быть создана программно. В случае Wi-Fi, например, для аналогичного по функциональности решения необходимо явно создать точку доступа (отсутствует возможность программного создания), а потом уже программно менять ее идентификацию. Путь к полной автоматизации описан в наших ранних работах: необходимо разделить в беспроводных сетях определение узлов и передачу данных. Эти процессы имеют разные требования к безопасности. В таком случае, узел беспроводной сети без возможностей соединения и передачи данных - это просто сенсор. Программная активация такого объекта не будет создавать проблем с безопасностью.

Библиография

[1] Namiot, Dmitry, and Manfred Sneps-Sneppe. "Customized check-in procedures." Smart Spaces and Next Generation Wired/Wireless Networking. Springer, Berlin, Heidelberg, 2011. 160-164.

[2] Namiot, Dmitry, and Manfred Sneps-Sneppe. "A new approach to advertising in social networks-business-centric check-ins." 2011 15th International Conference on Intelligence in Next Generation Networks. IEEE, 2011.

[3] Cho, Eunjoon, Seth A. Myers, and Jure Leskovec. "Friendship and mobility: user movement in location-based social networks." Proceedings of the 17th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2011.

[4] Namiot, Dmitry, and Manfred Sneps-Sneppe. "Advertising in Social Networks: Business-oriented Check-ins." (2011): 20-24.

[5] Namiot, Dmitry, and Manfred Sneps-Sneppe. "Geofence and network proximity." Internet of Things, Smart Spaces, and Next Generation Networking. Springer, Berlin, Heidelberg, 2013. 117-127.

[6] Namiot, Dmitry, and Manfred Sneps-Sneppe. "Mobile Services and Network Proximity." arXiv preprint arXiv:1305.4348 (2013).

[7] Network proximity App https://gitlab.com/IvanMak/network-proximity-app Retrieved: Dec, 2019.

[8] Namiot, Dmitry, and Manfred Sneps-Sneppe. "On Physical Web for Social Networks." International Conference on Distributed Computer and Communication Networks. Springer, Cham, 2019.

[9] Namiot, Dmitry. "On indoor positioning." International Journal of Open Information Technologies 3.3 (2015): 23-26.

[10] Namiot, Dmitry, and Manfred Sneps-Sneppe. "CAT-cars as tags." 2014 7th International Workshop on Communication Technologies for Vehicles (Nets4Cars-Fall). IEEE, 2014.

[11] Bluetooth specification. Version 5.0. - 2019. 2822 p.

[12] Faragher R., Harle R. Location fingerprinting with bluetooth low energy beacons //IEEE journal on Selected Areas in Communications. - 2015. - Т. 33. - №. 11. - С. 2418-2428.

[13] Bluetooth overview. https://developer.android.com/guide/topics/connectivity/bluetooth. Retrieved: Dec, 2019.

[14] Distribution dashboard. https://developer.android.com/about/dashboards Retrieved: Dec, 2019.

[15] Android 6.0 Changes. https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html. Retrieved: Dec, 2019.

[16] Tjensvold J. M. Comparison of the IEEE 802.11, 802.15. 1, 802.15. 4 and 802.15. 6 wireless standards. https://janmagnet.files.wordpress.com/2008/07/comparison-ieee-802-standards.pdf. Retrieved: Dec 2019.

[17] Flickenger R. et al. Very long distance wi-fi networks. //Proceedings of the ACM SIGCOMM 2008 Conference on Computer Communications -2nd ACM SIGCOMM Workshop on Networked Systems for Developing Regions. - 2008. - C. 1-5.

[18] Wi-Fi Direct. https://www.wi-fi.org/discover-wi-fi/wi-fi-direct. Retrieved: Dec 2019.

[19] Sun, Weiping, et al. "Wi-Fi could be much more." IEEE Communications Magazine 52.11 (2014): 22-29.

[20] Wi-Fi Peer-to-Peer (P2P) Technical Specification Version 1.7. https://www.wi-

fi.org/download.php?file=/sites/default/files/private/Wi-Fi%20P2P%20Technical%20Specification%20v1.7.pdf. Retrieved: Dec 2019

[21] Aneja N., Gambhir S. Profile-Based Ad Hoc Social Networking Using Wi-Fi Direct on the Top of Android //Mobile Information Systems. - 2018. - Т. 2018.

[22] Des Châtelliers J. C. How to activate the mobile hotspot on Android programmatically... Or not... Retrieved: Dec 2019. https://medium.com/@jean.creuzedeschatelliers/how-to-activate-the-mobile-hotspot-on-android-programmatically-or-not-5931e44097e3.

[23] Namiot D. Context-Aware Browsing--A Practical Approach //2012 Sixth International Conference on Next Generation Mobile Applications, Services and Technologies. - IEEE, 2012. - С. 18-23.

[24] Minch R. P. Privacy issues in location-aware mobile devices // Proceedings of the 37th Annual Hawaii International Conference on System Sciences, 2004. - IEEE, 2004.

[25] Кузьмин М. Ф. Проектирование и разработка мобильного приложения для навигации на парковках с применением Bluetooth-маячков //Горный информационно-аналитический бюллетень (научно-технический журнал). - 2017. - N°. 3. - С. 383-393.

[26] Sadeh N. et al. Understanding and capturing people's privacy policies in a mobile social networking application //Personal and Ubiquitous Computing. - 2009. - Т. 13. - №. 6. - С. 401-412.

[27] Haski J. et al. Location prediction using wireless signals on online social networks : заяв. пат. 15838289 США. - 2018.

[28] Гриняк В. М., Гриняк Т. М., Цыбанов П. А. Позиционирование внутри помещений с помощью Bluetooth-устройств //Территория новых возможностей. Вестник Владивостокского государственного университета экономики и сервиса. - 2018. -№. 2 (41). - С. 137-147.

[29] Chawathe S. S. Beacon placement for indoor localization using bluetooth //2008 11th International IEEE Conference on Intelligent Transportation Systems. - IEEE, 2008. - С. 980-985.

[30] Subhan F. et al. Indoor positioning in bluetooth networks using fingerprinting and lateration approach //2011 International Conference on Information Science and Applications. - IEEE, 2011.

- С. 1 -9.

[31] Deordica B., Alexandra M. Advertisement using Bluetooth Low Energy //Review of the Air Force Academy. - 2014. - №. 2. - С. 6570.

[32] Намиот Д. Е. Доступ к локальным данным на основе информации о сетевой близости //Современные информационные технологии и ИТ-образование. - 2014. - №. 10.

- С. 306-311.

[33] Намиот Д. Е. Персональные Bluetooth теги //International Journal of Open Information Technologies. - 2014. - Т. 2. - №. 3.

[34] Namiot D. Network proximity on practice: Context-aware applications and Wi-Fi proximity //International Journal of Open Information Technologies. - 2013. - Т. 1. - №. 3. - С. 1-4.

[35] Noguchi S. et al. Student attendance management system with bluetooth low energy beacon and android devices //2015 18th International Conference on Network-Based Information Systems. -IEEE, 2015. - С. 710-713.

[36] Anand S. et al. Attendance monitoring in classroom using smartphone & Wi-Fi fingerprinting //2016 IEEE Eighth International Conference on Technology for Education (T4E). - IEEE, 2016. - С. 62-67.

[37] Physical Web. https://google.github.io/physical-web/ Retrieved: Dec, 2019.

[38] Xu R. Leveraging Mobile and Internet of Things Technologies to Enhance Products with Digital Services : дис. - ETH Zurich, 2016.

[39] Telstar 18 | Официальный мяч Чемпионата мира по футболу FIFA 2018™. Retrieved: March 2019. https://www.adidas.ru/telstar_18.

[40] Klein, F. et al. The Hygiene Games //Studies in Health Technology and Informatics. - 2016. - Т. 225. - С. 658-662.

[41] How do I use Nearby Friends? https://www.facebook.com/help/android-app/291236034364603?locale=en_US. Retrieved: Dec, 2019.

[42] «ВКонтакте» позволила искать новых друзей поблизости по геолокации. https://tj ournal.ru/flood/52154-vk-add-nearby. Retrieved: Dec, 2019.

[43] Badoo - Помощь | Люди Рядом и Поиск. https://badoo.com/help/?section=23. Retrieved: Dec, 2019.

[44] Quercia D. et al. Recommending social events from mobile phone location data //2010 IEEE international conference on data mining. -IEEE, 2010. - С. 971-976.

[45] Дуров, П. Геолокация ВКонтакте. https://vk.com/blog/blog137. Retrieved: Dec, 2019.

[46] About Location Targeting. https://www.facebook.com/business/help/202297959811696?locale= en_US. Retrieved: Dec, 2019.

[47] Huang Q., Liu Y. On geo-social network services //2009 17th International Conference on Geoinformatics. - IEEE, 2009. - С. 1-6.

[48] Chow C. Y., Bao J., Mokbel M. F. Towards location-based social networking services //Proceedings of the 2nd ACM SIGSPATIAL International Workshop on Location Based Social Networks. - ACM, 2010. - С. 31-38.

[49] Papakipos M. N. et al. Statistics for continuous location tracking : пат. 8880093 США. - 2014.

[50] Eagle N., Pentland A. Social serendipity: Mobilizing social software //IEEE Pervasive Computing. - 2005. - Т. 4. - №. 2. - С. 28-34.

[51] Beach A. et al. Whozthat? evolving an ecosystem for context-aware mobile social networks //IEEE network. - 2008. - Т. 22. - №. 4. - С. 50-55.

[52] Разработчикам | ВКонтакте. https://vk.com/dev/. Retrieved: Dec, 2019.

[53] Huang N. F. et al. A fast URL lookup engine for content-aware multigigabit switches //19th International Conference on Advanced

Information Networking and Applications (AINA'05) Volume 1 (AINA papers). - IEEE, 2005. - Т. 1. - С. 641-646.

[54] API reference | Android Developers. https://developer.android.com/reference. Retrieved: Dec, 2019.

[55] Song Y., Ou S., Lee J. An Analysis of Existing Android Image Loading Libraries: Picasso, Glide, Fresco, AUIL and Volley //2016 International Conference on Informatics, Management Engineering and Industrial Application (IMEIA 2016). - 2016. - С. 56-60.

[56] Намиот Д. Е., Макарычев И. П. Использование Physical Web как расширения социальных сетей //Ломоносовские чтения: научная конференция, Москва, факультет ВМК МГУ имени М. В. Ломоносова, 15-25 апреля 2019 г.: тезисы докладов. - 2019. - C. 81-82.

On the alternative model of location marking

on social networks

Dmitry Namiot, Ivan Makarychev

Abstract— The paper examines the implementation of one approach to alternative presentation of location information in social networks. The classic model consists in placing a record (message) with some real or virtual place, which is described by a pair of geographical coordinates (latitude, longitude). Further, using the social networking API, the user can get a list of members of his social circle who are in a given place or nearby. For business applications, these location markers provide the basis for service offerings. This paper looks at the network proximity approach, where data is transmitted directly to mobile users in the vicinity. It completely excludes the handling of geo-referenced data as well as the need to store location data in a third-party storage location. This approach does not store location information on a social network, but rather shares social network data (a link to a profile) directly with other nearby users. This approach solves several issues at once, from security to scalability. This paper looks at the implementation of such a model for the social network VKontakte.

Keywords—network proximity, geo-informatics.

References

[1]Namiot, Dmitry, and Manfred Sneps-Sneppe. "Customized check-in procedures." Smart Spaces and Next Generation Wired/Wireless Networking. Springer, Berlin, Heidelberg, 2011. 160-164.

[2]Namiot, Dmitry, and Manfred Sneps-Sneppe. "A new approach to advertising in social networks-business-centric check-ins." 2011 15th International Conference on Intelligence in Next Generation Networks. IEEE, 2011.

[3]Cho, Eunjoon, Seth A. Myers, and Jure Leskovec. "Friendship and mobility: user movement in location-based social networks." Proceedings of the 17th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2011.

[4]Namiot, Dmitry, and Manfred Sneps-Sneppe. "Advertising in Social Networks: Business-oriented Check-ins." (2011): 20-24.

[5]Namiot, Dmitry, and Manfred Sneps-Sneppe. "Geofence and network proximity." Internet of Things, Smart Spaces, and Next Generation Networking. Springer, Berlin, Heidelberg, 2013. 117-127.

[6]Namiot, Dmitry, and Manfred Sneps-Sneppe. "Mobile Services and Network Proximity." arXiv preprint arXiv:1305.4348 (2013).

[7]Network proximity App https://gitlab.com/IvanMak/network-proximity-app Retrieved: Dec, 2019.

[8]Namiot, Dmitry, and Manfred Sneps-Sneppe. "On Physical Web for Social Networks." International Conference on Distributed Computer and Communication Networks. Springer, Cham, 2019.

[9]Namiot, Dmitry. "On indoor positioning." International Journal of Open Information Technologies 3.3 (2015): 23-26.

[10] Namiot, Dmitry, and Manfred Sneps-Sneppe. "CAT-cars as tags." 2014 7th International Workshop on Communication Technologies for Vehicles (Nets4Cars-Fall). IEEE, 2014.

[11] Bluetooth specification. Version 5.0. - 2019. 2822 p.

[12] Faragher R., Harle R. Location fingerprinting with bluetooth low energy beacons //IEEE journal on Selected Areas in Communications. -2015. - T. 33. - #. 11. - S. 2418-2428.

[13] Bluetooth overview. https://developer.android.com/guide/topics/connectivity/bluetooth. Retrieved: Dec, 2019.

[14] Distribution dashboard. https://developer.android.com/about/dashboards Retrieved: Dec, 2019.

[15] Android 6.0 Changes. https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html. Retrieved: Dec, 2019.

[16] Tjensvold J. M. Comparison of the IEEE 802.11, 802.15. 1, 802.15. 4 and 802.15. 6 wireless standards. https://janmagnet.files.wordpress.com/2008/07/comparison-ieee-802-standards.pdf. Retrieved: Dec 2019.

[17] Flickenger R. et al. Very long distance wi-fi networks. //Proceedings of the ACM SIGCOMM 2008 Conference on Computer Communications -2nd ACM SIGCOMM Workshop on Networked Systems for Developing Regions. - 2008. - C. 1-5.

[18] Wi-Fi Direct. https://www.wi-fi.org/discover-wi-fi/wi-fi-direct. Retrieved: Dec 2019.

[19] Sun, Weiping, et al. "Wi-Fi could be much more." IEEE Communications Magazine 52.11 (2014): 22-29.

[20] Wi-Fi Peer-to-Peer (P2P) Technical Specification Version 1.7. https://www.wi-fi.org/download.php?file=/sites/default/files/private/Wi-Fi%20P2P%20Technical%20Specification%20v1.7.pdf. Retrieved: Dec 2019

[21] Aneja N., Gambhir S. Profile-Based Ad Hoc Social Networking Using Wi-Fi Direct on the Top of Android //Mobile Information Systems. -2018. - T. 2018.

[22] Des Châtelliers J. C. How to activate the mobile hotspot on Android programmatically... Or not... Retrieved: Dec 2019. https://medium.com/@jean.creuzedeschatelliers/how-to-activate-the-mobile-hotspot-on-android-programmatically-or-not-5931e44097e3.

[23] Namiot D. Context-Aware Browsing--A Practical Approach //2012 Sixth International Conference on Next Generation Mobile Applications, Services and Technologies. - IEEE, 2012. - S. 18-23.

[24] Minch R. P. Privacy issues in location-aware mobile devices // Proceedings of the 37th Annual Hawaii International Conference on System Sciences, 2004. - IEEE, 2004.

[25] Kuz'min M. F. Proektirovanie i razrabotka mobil'nogo prilozhenija dlja navigacii na parkovkah s primeneniem Bluetooth-majachkov //Gornyj informacionno-analiticheskij bjulleten' (nauchno-tehnicheskij zhurnal). -2017. - #. 3. - S. 383-393.

[26] Sadeh N. et al. Understanding and capturing people's privacy policies in a mobile social networking application //Personal and Ubiquitous Computing. - 2009. - T. 13. - #. 6. - S. 401-412.

[27] Haski J. et al. Location prediction using wireless signals on online social networks : zajav. pat. 15838289 SShA. - 2018.

[28] Grinjak V. M., Grinjak T. M., Cybanov P. A. Pozicionirovanie vnutri pomeshhenij s pomoshh'ju Bluetooth-ustroj stv //Territorija novyh vozmozhnostej. Vestnik Vladivostokskogo gosudarstvennogo universiteta jekonomiki i servisa. - 2018. - #. 2 (41). - S. 137-147.

[29] Chawathe S. S. Beacon placement for indoor localization using bluetooth //2008 11th International IEEE Conference on Intelligent Transportation Systems. - IEEE, 2008. - S. 980-985.

[30] Subhan F. et al. Indoor positioning in bluetooth networks using fingerprinting and lateration approach //2011 International Conference on Information Science and Applications. - IEEE, 2011. - S. 1-9.

[31] Deordica B., Alexandra M. Advertisement using Bluetooth Low Energy //Review of the Air Force Academy. - 2014. - #. 2. - S. 65-70.

[32] Namiot D. E. Dostup k lokal'nym dannym na osnove informacii o setevoj blizosti //Sovremennye informacionnye tehnologii i IT-obrazovanie. - 2014. - #. 10. - S. 306-311.

[33] Namiot D. E. Personal'nye Bluetooth tegi //International Journal of Open Information Technologies. - 2014. - T. 2. - #. 3.

[34] Namiot D. Network proximity on practice: Context-aware applications and Wi-Fi proximity //International Journal of Open Information Technologies. - 2013. - T. 1. - #. 3. - S. 1-4.

[35] Noguchi S. et al. Student attendance management system with bluetooth low energy beacon and android devices //2015 18th International Conference on Network-Based Information Systems. - IEEE, 2015. - S. 710-713.

[36] Anand S. et al. Attendance monitoring in classroom using smartphone & Wi-Fi fingerprinting //2016 IEEE Eighth International Conference on Technology for Education (T4E). - IEEE, 2016. - S. 62-67.

[37] Physical Web. https://google.github.io/physical-web/ Retrieved: Dec, 2019.

[38] Xu R. Leveraging Mobile and Internet of Things Technologies to Enhance Products with Digital Services : dis. - ETH Zurich, 2016.

[39] Telstar 18 | Oficial'nyj mjach Chempionata mira po futbolu FIFA 2018™. Retrieved: March 2019. https://www.adidas.ru/telstar_18.

[40] Klein, F. et al. The Hygiene Games //Studies in Health Technology and Informatics. - 2016. - T. 225. - S. 658-662.

[41] How do I use Nearby Friends? https://www.facebook.com/help/android-app/291236034364603?locale=en_US. Retrieved: Dec, 2019.

[42] «VKontakte» pozvolila iskat' novyh druzej poblizosti po geolokacii. https://tjournal.ru/flood/52154-vk-add-nearby. Retrieved: Dec, 2019.

[43] Badoo - Pomoshh' | Ljudi Rjadom i Poisk. https://badoo.com/help/?section=23. Retrieved: Dec, 2019.

[44] Quercia D. et al. Recommending social events from mobile phone location data //2010 IEEE international conference on data mining. - IEEE, 2010. - S. 971-976.

[45] Durov, P. Geolokacija VKontakte. https://vk.com/blog/blog137. Retrieved: Dec, 2019.

[46] About Location Targeting. https://www.facebook.com/business/help/202297959811696?locale=en_U S. Retrieved: Dec, 2019.

[47] Huang Q., Liu Y. On geo-social network services //2009 17th International Conference on Geoinformatics. - IEEE, 2009. - S. 1-6.

[48] Chow C. Y., Bao J., Mokbel M. F. Towards location-based social networking services //Proceedings of the 2nd ACM SIGSPATIAL International Workshop on Location Based Social Networks. - ACM, 2010. - S. 31-38.

[49] Papakipos M. N. et al. Statistics for continuous location tracking : pat. 8880093 SShA. - 2014.

[50] Eagle N., Pentland A. Social serendipity: Mobilizing social software //IEEE Pervasive Computing. - 2005. - T. 4. - #. 2. - S. 28-34.

[51] Beach A. et al. Whozthat? evolving an ecosystem for context-aware mobile social networks //IEEE network. - 2008. - T. 22. - #. 4. - S. 50-55.

[52] Razrabotchikam | VKontakte. https://vk.com/dev/. Retrieved: Dec, 2019.

[53] Huang N. F. et al. A fast URL lookup engine for content-aware multi-gigabit switches //19th International Conference on Advanced Information Networking and Applications (AINA'05) Volume 1 (AINA papers). - IEEE, 2005. - T. 1. - S. 641-646.

[54] API reference | Android Developers. https://developer.android.com/reference. Retrieved: Dec, 2019.

[55] Song Y., Ou S., Lee J. An Analysis of Existing Android Image Loading Libraries: Picasso, Glide, Fresco, AUIL and Volley //2016 International Conference on Informatics, Management Engineering and Industrial Application (IMEIA 2016). - 2016. - S. 56-60.

[56] Namiot D. E., Makarychev I. P. Ispol'zovanie Physical Web kak rasshirenija social'nyh setej //Lomonosovskie chtenija: nauchnaja konferencija, Moskva, fakul'tet VMK MGU imeni M. V. Lomonosova, 1525 aprelja 2019 g.: tezisy dokladov. - 2019. - C. 81-82.