Site icon AppTractor

Работаем с Nearby Interaction в iOS 14

В iOS 14 Apple анонсировала новую функцию под названием Nearby Interaction (Близкое взаимодействие), которая позволяет находить соседние устройства и взаимодействовать с ними, понимая расстояние и направление до них.

Фреймворк Nearby Interaction (здесь вы можете посмотреть учебную сессию с WWDC20) в потоке определяет расстояние и направление между устройствами Apple, содержащими чип U1 (представленный в прошлом году чип U1 в моделях iPhone 11 обеспечивает поддержку Ultra Wideband для улучшения пространственного восприятия, но до сих пор Apple использовала эту технологию только для обеспечения направленной работы AirDrop в iOS 13). Теперь эта мощная комбинация аппаратного и программного обеспечения позволяет создавать интуитивно понятные пространственные взаимодействия, основанные на взаимном расположении двух или более устройств.

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

Так работает Airdrop в iOS 13. В выборе используются технологии пространственного ориентирования, впервые появившиеся в iPhone 11. Пользователь может ориентировать свой смартфон на чужое устройство, чтобы получить подсказку на экране общего доступа для представления наиболее релевантного выбора.

Такая высокая точность возможна только благодаря чипу U1, разработанному Apple.

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

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

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

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

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

Все взаимодействия инкапсулированы в сессии. Подобно другим фреймворкам Apple, таким как, например, ARKit, вы предоставляете вашему объекту сессии конфигурацию, с которой вы хотели бы работать. Предположим, что два или более пользователей работают с вашим приложением, и они хотят взаимодействовать друг с другом в пространстве. Прежде чем это начнется, ваше приложение должно сообщить системе с обеих сторон, как идентифицировать другое устройство, когда оно находится рядом. Pear discovery (обнаружение пиров) — ключевая концепция. Устройства могут обнаруживать друг друга с сохранением конфиденциальности, используя то, что Apple называет токеном обнаружения.

Давайте подробнее рассмотрим реализацию Nearby Interaction для нашего приложения.

Я создал вспомогательный класс с помощью шаблона Singleton. Я инициализирую сессию и MPC Manager. Нам нужно обменяться токеном открытия с другими пирами. По этой причине я использую dMultipeerConnectivity (MPC) на сетевом уровне. С MPC вы можете легко передавать данные через iOS-устройства.

Фреймворк Multipeer Connectivity поможет мне в обмене токенами. MPC подключится к другим устройствам и уведомит меня с помощью метода «connectedToDevice». Когда я подключусь к пиру, я создам NISession и поделюсь маркером обнаружения с Thoose. И если я получил токен, мне нужно будет начать сеанс с этой конфигурацией. Вот и все. Теперь вы можете получать обновления о близлежащих объектах. На самом деле у нас есть три шага.

  1. Создать NISession
  2. Получить токен обнаружения из сеанса
  3. Обменяться токенами

После этого, если устройство переместится, вы получите обновление. Nearby Interaction обеспечивает добавление двух основных типов данных — измерения расстояния между устройствами и измерения относительного направления от одного к другому. Вы можете получить эти свойства через NINearbyObject.

Теперь вы сможете легко использовать Nearby Interaction в своих приложениях. :)

Исходники  проекта вы можете скачать здесь.

Источник

 

Exit mobile version