iBeacon отслеживает несколько маяков с одинаковым UUID и разными основными, второстепенными - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть несколько iBeacon с одинаковым UUID, но разными старшими и младшими номерами.Это могут быть разные комбинации для мажорных и минорных, но UUID остается неизменным.Скажем, например,

  • устройство # 1 - UUID xyz, старший 1, младший 1
  • устройство # 2 - UUID xyz, главный 1, младший 2
  • устройство# 3 - UUID xyz, мажор 2, второстепенный 1
  • .....
  • устройство #n - UUID xyz, мажор 10, второстепенный 1

Такжеэти iBeacons расположены в непосредственной близости, в диапазоне от 1 до 50 футов.Поэтому их области могут пересекаться друг с другом.

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

Могу ли я использовать init(proximityUUID: UUID, identifier: String) с моим UUID, а затем перебирать их?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Существует два разных API-интерфейса iOS CoreLocation, и вам необходимо использовать первый для этой цели:

1.Beacon Ranging (Что вы хотите)

Вы называете locationManager.startRangingBeacons(in: region) с определением региона, которое оставляет большой и младший ноль.Конструктор, который вы показываете init(proximityUUID: UUID, identifier: String), делает именно это.

Это даст вам обратный вызов locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) один раз в секунду с массивом всех CLBeacon объектов, которые соответствуют определению вашего региона.Вы можете перебрать этот массив, чтобы увидеть их все.

2.Мониторинг маяков (То, что вы не хотите)

Вы звоните locationManager.startMonitoring(region: region) с определением региона, которое оставляет большой и младший ноль.

Это даст вам обратный вызов на locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion)или эквивалентный метод didExitRegion каждый раз, когда появляется как минимум один маяк, соответствующий определению региона, или все маяки, соответствующие региону, исчезают.

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

0 голосов
/ 19 февраля 2019

Да, вы определенно можете!Вы не будете получать уведомления о новых делегатах, когда обнаружен другой iBeacon, если вы не создадите несколько слушателей с разными идентификаторами, но как только вы окажетесь в области данного UUID, вы можете перебирать все маяки в пределах диапазона и получать их основные и второстепенные

...