我注册了自己的位置管理员来监控和范围几个信标:
[self.locationManager startMonitoringForRegion:region];
[self.locationManager startRangingBeaconsInRegion:region];
我的理解是,当找到一个或多个信标时,会调用此委托方法:
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
当我打开我的信标时,确实调用了这个委托方法,但是信标数组是空的。是否有任何理由说明我的灯塔未列在该阵列中?
这是一个截图来说明这种情况:
didEnterRegion:
或didDetermineState:
,但这仍然会导致相同的事情。[self.locationManager requestWhenInUseAuthorization];
。NSLocationWhenInUseUsageDescription
键。答案 0 :(得分:3)
原来这是因为我在创建CLBeaconRegion
时没有使用唯一标识符。
特别感谢nayoso帮我解决这个问题。
答案 1 :(得分:1)
尝试使用iOS 8设备上的Locate app,并验证您是否看到了信标。确保将信标的UUID配置到正确定位应用程序中。
如果您确实在Locate上看到它,那么我怀疑问题是iOS 8上的应用没有正确授予权限。在这种情况下,您应该发布一个代码段,显示您调用的设置{{1并且还包含plist文件的一部分,其中需要包含以下内容:
[self.locationManager requestWhenInUseAuthorization];
答案 2 :(得分:0)
你必须首先启动信标监控,同时设置notifyEntryStateOnDisplay = YES
self.region1.notifyEntryStateOnDisplay = YES;
[theLocManager startMonitoringForRegion: region1];
[theLocManager startRangingBeaconsInRegion: region1];
在iOS 8中,该代码也适用于我。
答案 3 :(得分:0)
当我使用major和minor作为参数创建我的CLBeaconRegion时,我确实遇到了这个问题。如果您创建具有主要和次要参数的信标区域,并且没有与主要和未成年人相关的任何信标,则信标列表将为空。在我的情况下,我想动态确定主要/次要。一旦我用UUID和Identifier初始化CLBeaconRegion一切都很顺利。