从iBeacon实时切换到BLE?
我们的信标硬件被编程为iBeacon +可写BLE。 所以我可以用iBeacon发现它,并通过BLE连接到它。
我想扫描iBeacon,当我进入区域(应用程序在后台),并且正在调用代理时,他将切换到BLE并使用BLE连接到设备:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region { // here connect as usual via bluetooth }
所以,正如我所说,我可以单独编写/发现硬件,但是当我试图连接到模块,从委托通过BLE(当应用程序在背景中,我进入该地区,委托是在后台尝试与BLE连接,它不工作,虽然我可以在后台做一些区域内的其他事情,例如,连接到服务器。)
有什么我可以做到这一点吗? 我也试图停止灯塔区域监视,但即使如此,他也无法从背景连接到BLE。
在BG中做东西,你需要从OS请求时间。 你然后得到一个标识符。
//identifier @property(nonatomic, assign) UIBackgroundTaskIdentifier backgroundTaskIdentifier;
通过调用请求:
if(!self.backgroundTaskIdentifier) { self.backgroundTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ NSLog(@"expired, fail, throw!!!"); @throw [NSException exceptionWithName:@"BeaconServiceKilled" reason:@"Expired in bg" userInfo:nil]; }]; }
完成后再释放它
if(self.backgroundTaskIdentifier) { [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTaskIdentifier]; self.backgroundTaskIdentifier = 0; }