[英]How to detect iBeacons without know UUID,Any Possible to get core bluetooth or Some other way
是否可以在不知道其UUID的情况下检测iBeacon? 有什么方法可以使用Core Bluetooth或其他方法?
您必须至少知道要查找的UUID才能创建CLBeaconRegion
。 iOS上无法扫描“所有信标”。
iBeacon特别被Core Bluetooth发现所遮盖。
虽然您无法在未预先指定ProximityUUID的情况下在iOS上检测到信标,但是您可以设置范围以查找大量ProximityUUID-我已成功同时对其中的100个进行了范围调整(尽管有1000个崩溃了我的应用程序。)
通过使用在线信标数据库,您可以找到一个离您很近的UUID列表。 这不会确定地检测到每个信标,但是它将允许您检测到周围的许多信标,而不必在应用程序中构建UUID。
这是一个使用NingoSDK来获取100个最接近的ProximityUUID并将其注册以进行测距的示例。
let locationManager = CLLocationManager()
// Get up to 100 beacon ProximityUUIDs within 1km from our current location, so we can use these for beacon ranging
let queryClient = QueryBeaconClient(authToken: Settings().getSetting(key: Settings.ningoReadonlyApiTokenKey)!)
queryClient.queryFirstIdentifiers(latitude: latitude, longitude: longitude, radiusMeters: 1000, limit: 100) { (proximityUUIDStrings, errorCode, errorDetail) in
if let proximityUUIDStrings = proximityUUIDStrings {
NSLog("There are now \(proximityUUIDStrings.count) nearby beacon uuids")
if proximityUUIDStrings.count > 0 {
for region in locationManager.rangedRegions {
locationManager.stopRangingBeacons(in: region as! CLBeaconRegion)
}
for uuidString in proximityUUIDStrings {
let region = CLBeaconRegion(proximityUUID: UUID(uuidString: uuidString)!, identifier: uuidString)
locationManager.startRangingBeacons(in: region)
}
BeaconTracker.shared.updateTransientUuids(uuids: proximityUUIDStrings)
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.