使用iOS

时间:2017-05-18 06:47:22

标签: ios objective-c iphone bluetooth bluetooth-lowenergy

我正在尝试使用Core Bluetooth Framework的{​​{1}}执行以下操作:

1)连接外围设备

2)服务发现

3)特征发现

4)开始对特定特征进行通知

当与核心蓝牙(iOS)无关的回调触发时,必须在后台触发这些操作。

我已正确设置应用程序的蓝牙背景设置,当应用程序通过中央按钮放入后台时,一切正常:核心位置回调启动,核心蓝牙步骤正确执行。 当应用程序被任务管理器向上扫描时,问题就出现了:在这种情况下,当核心位置回调启动时,手机能够连接到外围设备(1),但它不会发现服务。

我正在使用带有iOS 10.3.1和micro nrf51822的iPhone 6。

这是我的代码:

CBCentralManager初始化(viewDidLoad)

Core Location Framework

核心位置回调:

self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{ CBCentralManagerOptionRestoreIdentifierKey:@“myCentralManagerIdentifier”}];

CoreBluetooth回调:

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region{
    NSLog(@“*** enter region”);
    dispatch_async(dispatch_get_main_queue(), ^{
        NSString *savedUuid = [[NSUserDefaults standardUserDefaults]stringForKey:@“preferenceUuid”];
        if (savedUuid!=NULL){
            NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:savedUuid];
            NSArray *arrayUuid = [NSArray arrayWithObjects:uuid, nil];
            _knownPeripheral = [[self.centralManager retrievePeripheralsWithIdentifiers:arrayUuid] objectAtIndex:0];
        }
        if (_knownPeripheral!=NULL){
            [self.centralManager connectPeripheral:_knownPeripheral options:nil];
        }
    });
}

当应用程序从被杀死状态唤醒时,如何正确执行从1)到4)的步骤?

谢谢

0 个答案:

没有答案