[英]iBeacon: Unable to detect broadcaster - Intermittent
我遇到了有关iBeacon的本教程( http://www.appcoda.com/ios7-programming-ibeacons-tutorial/ ),我发现这很有趣。 我已经下载了他们的源代码,并且能够正常运行。
无论如何,我注意到一件奇怪的事。 有时,当我先运行广播员而不是接收者时,接收者似乎无法检测到任何信标,但是如果我先运行接收器,则只能检测到信标。
我曾尝试研究其他产品,但iBeacon似乎是一项新技术,目前找不到太多参考。 你们当中有人弄脏了iBeacon的事情,可以解决这个间歇性问题吗?
非常感谢您的帮助。
您看到的问题是因为接收器应用程序仅在检测到您已输入区域时才开始对信标进行“测距”。 如果首先启动广播器,则您已经在信标区域内,因此您的应用程序可能无法开始测距。 本文中的这句话是线索:
启动接收器应用程序,并将其远离广播信标,然后朝它走去以模拟进入该区域。
监视信标意味着仅当您进入或退出您定义的区域时,才会通知您的应用程序。 该区域的半径可能高达〜50m,因此,如果您只是坐在接收器旁边,除非您关闭并重新打开接收器,否则不应触发这些事件之一。 可以在应用程序在后台或前台运行时进行监视。
测距区域中的信标是指应用程序将与该设备可以在指定的区域(由距离排序)查看所有信标列表来每秒一次通知。 测距将调用CLLocationManager
委托的locationManager:didRangeBeacons:inRegion:
方法。 当您在区域内外移动时,信标列表将不断更新,并且您到信标的距离也会改变。 范围调整是在您的应用程序处于前台时发生的。
如果您希望该应用程序不断收听信标,请尝试致电
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
在您的viewDidLoad:
,而不是在didEnterRegion:
方法中。
由于当前位置委托的可用方法。 还添加此方法-
- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
}
这样可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.