WiFi и Bluetooth сканируют препятствия и какой-то фрагмент кода

Всем привет! Я из команды Navigine. В течение восьми лет мы предоставляем интегрированные мобильные технологии позиционирования, которые позволяют использовать передовые решения для внутренней навигации и бесконтактных решений. Мы уже писали несколько статей о работе с разными ограничениями на сканирование сигналов Bluetooth и WiFi на Android-устройствах, поэтому решили закончить все статьей о том, как эти ограничения влияют на разработку приложений для iOS. Давайте углубимся в детали и попробуем понять, как обстоят дела на iOS.

Сканирование WiFi

Начнем с самого простого раздела, а именно со сканирования устройств Wi-Fi. На устройствах iOS нет общедоступного API для сканирования сетей Wi-Fi. Кажется, мы можем закончить этот раздел, но все же у нас есть несколько предложений для вас. Во-первых, вы можете использовать частный API, например Stumbler, который некоторые люди используют и советуют всем в StackOverflow. Во-вторых, если вам нужно знать только имя сети, к которой подключен пользователь, вы можете использовать этот фрагмент кода.

По сравнению с Android, на котором можно безопасно сканировать WiFi-устройства, хотя, с некоторыми ограничениями в последних версиях, отсутствие такой опции на iOS выглядит очень грустно и ограничивает возможности разработчиков. Может быть, в ближайшее время все это изменится, но пока приходится довольствоваться тем, что есть.

Bluetooth и сканирование маяков

На устройствах Android сканирование Bluetooth-устройств и маяков осуществляется одним и тем же классом и одним и тем же методом, что позволяет обрабатывать все входящие сигналы с помощью одного обратного вызова. На устройствах iOS это немного иначе.
Стоит отметить, что это сканирование не дает вам полезных данных, помимо всего прочего, вам будут предоставлены не все устройства Bluetooth, некоторые будут удалены. Например, такой важный элемент, как MAC-адрес, вам не будет предоставлен, и это сканирование уже частично бессмысленно. Вот фрагмент кода для сканирования Bluetooth и WiFi, вы можете найти более подробную информацию в документации.

Для сканирования маяков есть и другие методы. Определение местоположения маяков и наблюдение за ними. Вот преимущества и описание каждого метода.

Ранжирование

  • Это похоже на проверку связи с устройствами. Он эффективно обследует территорию каждую секунду и возвращается с множеством маяков, находящихся в пределах досягаемости.
  • Вы получите экземпляр CLBeacon. Здесь есть вся ожидаемая информация: UUID, Major, Minor и RSSI.
  • Вы можете сделать это с любым количеством областей маяков, без каких-либо ограничений, как при мониторинге.

Мониторинг

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

Вот фрагмент кода для мониторинга.

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

Заключение

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

Спасибо Иль Кадырову!