Этот вопрос был задан здесь , но это не решает мою проблему, я объясню, почему это не решает проблему в конце вопроса.
Что я 'Для этого требуется 2 шага:
Пусть CBCentralManager обнаружит периферию
Пусть CLLocationManager прослушивает маяки, обнаруженные на шаге 1
Я узнал UUID моего маяка с помощью следующего метода делегата:
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String: Any], rssi RSSI: NSNumber) {
print(peripheral.identifier)
}
Затем выполняется шаг 2:
if let uuid = UUID.init(uuidString: "<identifier found in step 1>") {
locationManager.startRangingBeacons(in: .init(proximityUUID: uuid, identifier: UUID().uuidString))
}
Метод делегата моего locationManager просто печатает всемаяки в диапазоне:
func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
print(beacons)
}
Но все, что я получаю, это пустой массив.Зачем?Как это исправить?
Приведенный выше вопрос предполагает, что при создании CLBeaconRegion
мы должны дать уникальный идентификатор, который я уже делаю.