iOS应用无法检测到它位于CLBeaconRegion

时间:2019-07-02 19:53:04

标签: ios bluetooth bluetooth-lowenergy ibeacon beacon

我们从kontakt.io购买了许多信标,并正在尝试使用我们的iOS应用程序进行基本检测。蓝牙已打开,并且我的应用程序具有“始终”位置权限。我下载了Locate应用程序并输入了接近度UUID(它们都共享),该应用程序可以看到信标,这些信标实际上就在我旁边。我的应用程序中的委托方法却表现不佳。

我们正在构建一个CLBeaconRegion并调用以下命令:

[self.locationManager startMonitoringForRegion:newRegion];
[self.locationManager startRangingBeaconsInRegion:(CLBeaconRegion*) newRegion];

然后在短暂的超时呼叫之后

[self.locationManager requestStateForRegion:newRegion];

对于监视案例,我们的委托方法:

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(nonnull CLRegion *)region {          

被呼叫。我确认region参数中的UUID与我传递给监视的内容匹配。但是状态始终为CLRegionStateOutside或CLRegionStateUnknown。我希望它是CLRegionStateInside。

对于范围,使用委托方法:

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {

被调用(以某种方式?不确定是否是由于requestStateForRegion引起的),但是数组为空。

我可以采取哪些步骤解决此问题?我对幕后发生的事情感到茫然

1 个答案:

答案 0 :(得分:0)

我正在使用CLBeaconRegion的初始化程序,该初始化程序使用一个主值和次值,并为那些值传递0,尽管信标正在广播非零值。如果您只是想启动并运行信标并仅关注UUID,请记住,暂时需要适当排除这些主要和次要值。