从BLE设备获取通知

时间:2014-11-23 08:57:43

标签: ios bluetooth bluetooth-lowenergy

我正在开发一个与硬件设备连接的BLE(蓝牙LE)应用程序。 我能够发现并连接到设备,从设备读取数据,将数据写入设备。

我在Apple的BLE文档中找不到的是,当你靠近设备时,当应用程序关闭时,你怎么能收到通知。

我知道如何注册characteristic通知,但只有当应用在后台时才会发出此通知。

我知道iBeacon可以在应用关闭时检测到蓝牙并发送通知,但我希望在设备发现某个带有UUID的BLE时收到通知。

iBeacon,正在使用带有UUIDmajor and minor字段的BLE,我不需要/不需要。我想注册来自BLE的某个UUID的通知。

我这样做了,没有任何回应:

 self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    [self initRegion];

- (void)initRegion
{
    NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:@"4AD3FADF-F179-4343-0000-000000000000"];
    self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:@"BLE-NAME"];
    [self.locationManager startMonitoringForRegion:self.beaconRegion];

}


- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
    [self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
    NSLog(@"ENTER");

}

-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
    [self.locationManager stopRangingBeaconsInRegion:self.beaconRegion];
    NSLog(@"EXIT");
}

1 个答案:

答案 0 :(得分:2)

虽然iBeacon和一般BLE外设都使用蓝牙,但它们在iOS中的处理方式不同。

CoreBocation框架支持iBeacons(根据您的问题中的代码),而核心蓝牙框架支持实现GATT配置文件的BLE外设。

Core Bluetooth Programming Guide描述了如何发现和连接BLE外设。该指南还包括关于后台处理的部分。

基本上,您可以向目标外围设备发出“连接”,即使您的应用程序在后台,iOS也会在看到外围设备时完成连接 - 调用您的委托方法来告知您连接。

然而,虽然许多iBeacons可以配置相同的UUID,但外围设备的UUID是唯一的,因此除非您之前发现了外围设备,否则您可能无法发出连接。

您可以在后台扫描广告特定服务的外围设备,并使用它来发现和连接外围设备