我已经编写了一个小型iBeacon演示应用程序,其中包含信标范围,然后在第一次找到信标后监视范围内的信标。在我运行此应用程序后(如果它仍然在后台),我发现设备无法建立新的蓝牙连接。例如,当我进入我的汽车时,我的汽车无限地尝试连接到手机而没有成功,直到我再次关闭蓝牙。这似乎是在离开iBeacons区域后保持蓝牙活动的问题,但我已经停止了在didExitRegion上的信标测距。当视图消失或应用关闭时,我甚至尝试停止测距信号。是否还有其他步骤可以在离开范围时正确关闭连接?
编辑:我只说OP中的范围,但我已经确保在应用程序变为非活动状态和退出区域时停止监视信标区域。问题依然存在
编辑2:如果我必须说出预期的特定行为,我希望能够在应用程序运行时对信标进行范围和监控,并且在后台运行时不会停止其他蓝牙连接。实际行为是它确实在这些情况下跟踪信标,但它不允许形成其他蓝牙连接。
用于初始化和开始监视信标的代码(在viewDidLoad中):
if (self.beaconManager == nil) {
self.beaconManager = [[ESTBeaconManager alloc] init];
self.beaconManager.delegate = self;
}
if (self.icyMarshmallowRegion == nil) {
self.icyMarshmallowRegion = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID major:[kIcyMarshmallowMajor integerValue] minor:[kIcyMarshmallowMinor integerValue] identifier:kIcyMarshmallowRegionID];
self.icyMarshmallowRegion.notifyOnEntry = YES;
self.icyMarshmallowRegion.notifyEntryStateOnDisplay = YES;
}
[self.beaconManager startMonitoringForRegion:self.icyMarshmallowRegion];
停止监控的代码(在didExitRegion中):
[self.beaconManager stopMonitoringForRegion:self.icyMarshmallowRegion];
没有更多的步骤来“关闭蓝牙活动”,无论如何你的设备应该能够在监控iBeacon
地区时采取其他连接(我不确定测距因为它更像是一个'主动'任务,但我打赌它是同一件事情)
我在iBeacon
看到了许多与iOS7
相关的奇怪行为,其中一部分已经在iOS8
修复,希望一切都会很快好起来。我认为您不应该担心您描述的问题的代码,并等待iOS8