didRangeBeacon在没有发现任何信标的情况下进行了调用

Enr*_*tyo 6 core-location cllocationmanager ios ibeacon ios8

我注册了我自己的位置经理来监控和范围几个信标:

[self.locationManager startMonitoringForRegion:region];
[self.locationManager startRangingBeaconsInRegion:region];
Run Code Online (Sandbox Code Playgroud)

我的理解是,当找到一个或多个信标时,会调用此委托方法:

- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
Run Code Online (Sandbox Code Playgroud)

当我打开我的信标时,确实调用了这个委托方法,但是信标数组是空的.我的灯塔没有列在那个数组中有什么理由吗?

这是一个截图来说明这种情况:

在此输入图像描述


其他注意事项:

  • 我使用MacBeacon传输我的信标信号.我稍后会尝试使用真正的灯塔,但MacBeacon在iOS 7中一直很适合我.
  • 我尝试推迟测距,直到我得到didEnterRegion:didDetermineState:被叫,但这仍然导致相同的事情.
  • 我已经要求我的位置经理提供位置许可:[self.locationManager requestWhenInUseAuthorization];.
  • 我有一个非常相似的代码在Xcode 5/iOS 7 SDK中编译得很好.这是特定的Xcode 6/iOS 8行为吗?
  • NSLocationWhenInUseUsageDescription在我的plist中添加了键.

Enr*_*tyo 3

事实证明这是因为我在创建时没有使用唯一标识符CLBeaconRegion

特别感谢nayoso帮助我解决了这个问题。