Путаница с использованием маяка BLE в iOS - как получить правильный идентификатор? - PullRequest
0 голосов
/ 05 ноября 2019

Я уже некоторое время пытаюсь поиграть с маяками BLE и столкнулся с некоторыми запутанными проблемами.

Чего я хочу достичь:

  1. Сканирование рядомbeacons
  2. Выбор маяков для сохранения
  3. Мониторинг, когда выбранные маяки находятся в / вне диапазона.

Вот код, который я использую для сканирования ближайших маяков:

public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
    if(peripheral.name != nil && peripheral.name!.contains("MkiBeacon")){
        print("\n Beacon   : \(String(describing: peripheral.name)) \(peripheral.identifier)
            \(peripheral.major):\(peripheral.minor)
            \(peripheral.beaconName) \(peripheral.beaconUUID) \(peripheral.deviceID) ")
    }
}

Здесь я получаю только периферийные данные name и identifier, все остальные значения, такие как major,minor,UUID, не определены.

После этого я пытаюсь использовать identifier для мониторинга событий региона маяка:

        locationManager = CLLocationManager()
        locationManager?.delegate = self
        locationManager?.requestAlwaysAuthorization()
        let uuid = UUID(uuidString: peripheral.identifier)
        let major:CLBeaconMajorValue = 0
        let minor:CLBeaconMinorValue = 491
        let identifier = "myBeacon"
        let region = CLBeaconRegion(proximityUUID: uuid!, major:major,minor:minor,identifier: identifier)
        region.notifyOnEntry = true
        region.notifyEntryStateOnDisplay = true
        region.notifyOnExit = true
        locationManager?.startRangingBeacons(in: region)
        locationManager?.startMonitoring(for: region)

Кажется, что peripheral.identifier не является правильным значением, в котором оно нуждается, поскольку оно не работает. Это работает, когда я добавляю UUID из другого приложения сканирования маяков, которое я использую для проверки своих маяков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...