2014-11-23 103 views
0

我正在研究BLE(藍牙LE)應用程序,該應用程序與硬件設備連接。 我能夠發現並連接到設備,從設備讀取數據,將數據寫入設備。從BLE設備獲取通知

我在蘋果的BLE文檔中找不到什麼東西,當你靠近設備,應用程序靠近時,如何獲得通知。

我知道如何註冊到characteristic通知,但只有當應用程序在後臺時纔會發生此通知。

我知道iBeacon可以在應用程序關閉時檢測到藍牙,併發送通知,但是當設備發現某個的某個BLE時,我想要收到通知。

iBeacon,正在使用BLE UUIDmajor and minor字段,我不需要/不想要。我只想註冊一個來自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

雖然iBeacon顯示和一般的BLE外圍設備都使用藍牙,它們是不同的內部監督辦公室處理。

CoreLocation框架(根據您的問題中的代碼)支持iBeacon,而實現GATT配置文件的BLE外圍設備由Core Bluetooth框架支持。

Core Bluetooth Programming Guide描述瞭如何發現並連接到BLE外設。該指南還包含有關後臺處理的部分。

實質上,您可以向目標外設發出「連接」,當外圍設備被看到時,即使您的應用程序在後臺,iOS也會完成連接 - 調用您的委託方法來告知連接。

但是,儘管許多iBeacons可以使用相同的UUID進行配置,但外設的UUID是唯一的,所以除非您以前發現外設,否則您可能無法發出連接。

您可以掃描在後臺廣告特定服務的外圍設備,並使用它來發現並連接到外圍設備