我注册了自己的位置管理器来监控和测距几个信标:
[self.locationManager startMonitoringForRegion:region];
[self.locationManager startRangingBeaconsInRegion:region];
我的理解是,当找到一个或多个信标时,将调用此委托(delegate)方法:
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
当我打开我的信标时确实调用了这个委托(delegate)方法,但是信标数组是空的。我的信标未列在该数组中有什么原因吗?
下面是一个截图来说明这种情况:
其他注意事项:
- 我用了MacBeacon发送我的信标信号。稍后我会尝试使用真正的信标,但 MacBeacon 在 iOS 7 中对我来说运行良好。
- 我尝试延迟测距,直到调用
didEnterRegion:
或调用didDetermineState:
,但结果仍然相同。 - 我已向位置管理员请求位置权限:
[self.locationManager requestWhenInUseAuthorization];
。 - 我有一段非常相似的代码,在 Xcode 5/iOS 7 SDK 中编译后运行良好。这是特定的 Xcode 6/iOS 8 行为吗?
- 我在我的 plist 中添加了
NSLocationWhenInUseUsageDescription
键。
最佳答案
这是因为我在创建 CLBeaconRegion
时没有使用唯一标识符。
特别感谢nayoso帮助我解决这个问题。
关于ios - didRangeBeacon 在没有找到任何信标的情况下被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26429089/