首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CoreLocation和iBeacons时出现的问题

使用CoreLocation和iBeacons时出现的问题
EN

Stack Overflow用户
提问于 2014-02-05 23:26:37
回答 2查看 330关注 0票数 0

我想构建一个支持室内定位的应用程序(我知道蓝牙不是很精确,但粗略的数值一开始就足够了)。我的问题是,在关闭和打开蓝牙后,我只能将放置在房间中的信标定位10秒。奇怪的是,关闭和打开蓝牙可以解决问题(再次打开10秒)。

以下是我的简单测试应用程序的代码片段:

代码语言:javascript
复制
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
{
   BOOL beaconFound = NO;
   for(CLBeacon *beacon in beacons)
   {
       if(beacon.proximity == CLProximityNear)
       {
           _textView.text = @"A Beacon is Near!";
           beaconFound = YES;
       }
   }
   if(!beaconFound)
       _textView.text = @"No Beacon is Near";
}

这是iOS上的某种节能措施吗?我对此没有任何其他解释,但似乎没有其他人有这个问题。我还尝试在iPad上对模拟的iBeacon进行测距,但得到了相同的结果。

我希望能够不断地调整信标的范围,我是不是做错了什么?

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2014-02-06 00:20:10

我不确定你是在前台还是后台进行测距。我相信如果你在后台做这件事,在locationManager停止之前,iOS只允许你做一段时间的测距。

另一件事是你只需要检查CLProximityNear。您可能想尝试检查三个区域。我测试了startRangingBeaconsInRegion,结果是在近距离和远距离之间来回跳跃,有时是立即跳跃。希望这能有所帮助。

代码语言:javascript
复制
switch (beacon.proximity) {
     case CLProximityImmediate:
          _textView.text = @"A Beacon is Immediate!";
          beaconFound = YES;
          break;
     case CLProximityNear:
          _textView.text = @"A Beacon is Near!";
          beaconFound = YES;
          break;
     case CLProximityFar:
          _textView.text = @"A Beacon is Far!";
          beaconFound = YES;
          break;
     default:
          break;
}
票数 0
EN

Stack Overflow用户

发布于 2014-02-06 01:22:47

尝试删除此限定符:

if(beacon.proximity == CLProximityNear)

我怀疑您与信标的距离通常返回一个不同的值(可能是CLProximityFar或CLProximityImmediate)。如果为真,您将看到前10秒的结果的原因是因为在这段时间内,接近度值会有很大的波动。这可能会导致您在距离估计值确定之前,在这段时间内获得与CLProximityNear的匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21581328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档