Tag: core bluetooth

iOS:使用corebluetooth库从不同的视图控制器进行通信

我正在做corebluetooth应用程序。 我开发了使用核心蓝牙框架的图书馆。我有4个视图控制器。在第一个视图控制器我有扫描button,当我点击扫描button第二个屏幕出现与扫描设备和这些设备出现在桌面。 当我点击表视图外设连接,并提供其信息,如服务和charactestics.When我回到第一个视图控制器时,我有一个button,称为电池状态,当我点击该button,它应该调用电池信息从第二个视图控制器连接外围。 以下是我的代码在第二个视图控制器 -(void)viewdidload { coreBle = [[CoreBLE alloc] init]; coreBle.delegate = self; } 并连接设备 – (IBAction)Go:(id)sender { if (periperal==nil) { UIAlertView *alert=[[UIAlertView alloc]initWithTitle:nil message:@"Select watch to connect" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil]; [alert show]; } else{ [coreBle connectToPeripheralAt:[periperal integerValue]]; NSLog(@"peripheral connected is %@",periperal); HUD.labelText = @"Connecting…"; [HUD showWhileExecuting:@selector(connectingtask) onTarget:self withObject:nil animated:YES]; } } 如下所示从索引path值的select行连接外围设备 […]

corebluetooth和ios状态

使用corebluetooth库成功连接我的BLE设备,并在我的ios应用程序上为它设置特定服务的通知值。 在前景和背景模式下工作正常。 我目前将设备的标识符保存到UserDefaults,并且需要始终将ios设备始终连接到设备。 问:有关ios应用程序状态的corebluetooth实现的最佳做法是什么? 特别: 用户打开应用程序时应该执行什么操作? (目前:我使用保存的标识符重新连接到设备..但这是必要的,因为核心蓝牙应该自动保持连接到设备) 什么应该实施当用户背景的应用程序? 当用户从后台重新打开应用程序时应该执行什么? (我应该重新连接到设备?) 当用户杀死应用程序时应该执行什么? corebluetooth连接是否断开连接? 当电池电量不足,蓝牙关机或关机时应该执行什么操作? 最后: 是否有必要在singleton类中实现corebluetooth库,以确保应用程序只使用一个蓝牙pipe理器连接到设备?

有界和无界设备有什么区别?

我对iOS和BLE都很陌生,如果这个问题非常基本,请耐心等待。 有界和无界设备有什么区别? 我正在与CBCentralManager BLE在iOS,我想弄清楚如何配对他们通过CBCentralManager 。

在CBCentralManager委托方法didDiscoverPeripheral:从来没有调用

我在主队列中的viewdidload初始化CBCenteralManager 。 第一次更新状态方法被调用,开始扫描蓝牙设备,但didDiscoverPeripheral:委托方法永远不会被调用。 代码是: – (void)viewDidLoad { [super viewDidLoad]; self.CM = [[CBCentralManager alloc]initWithDelegate:self queue:nil]; } -(void)centralManagerDidUpdateState:(CBCentralManager *)central{ if (central.state == CBCentralManagerStatePoweredOn) { [self.CM scanForPeripheralsWithServices:nil options:nil]; } } – (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral(CBPeripheral*)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { } -(void)centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals{ } -(void)centralManager:(CBCentralManager *)central didRetrieveConnectedPeripherals:(NSArray *)peripherals{ } -(void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error{ } -(void)centralManager:(CBCentralManager […]

CoreBluetooth可以使用哪种configuration文件?

我在寻找关于CoreBluetooth信息,我看到iPhone4s / 5支持蓝牙4.0和蓝牙LE 。 另外,根据这个笔记 ,我可以使用这些configuration文件: 免提模式(HFP 1.6) 电话簿访问configuration文件(PBAP) 高级audio分发configuration文件(A2DP) audio/video远程控制configuration文件(AVRCP 1.4) 个人区域networkingconfiguration文件(PAN) 人机接口设备configuration文件(HID) 消息访问configuration文件(MAP) 我可以使用CoreBluetooth访问它们吗?如果可以,我怎样才能访问它们?

什么原因导致CBCentralManagerStateUnknown在iOS?

为什么使用这个简单的代码在iPad 2上获得CBCentralManagerStateUnknown ? – (BOOL)viewDidLoad { bluetoothManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; if ([manager state] == CBCentralManagerStatePoweredOff) NSLog(@"CBCentralManagerStatePoweredOff"); if ([manager state] == CBCentralManagerStatePoweredOn) NSLog(@"CBCentralManagerStatePoweredOn"); if ([manager state] == CBCentralManagerStateResetting) NSLog(@"CBCentralManagerStateResetting"); if ([manager state] == CBCentralManagerStateUnauthorized) NSLog(@"CBCentralManagerStateUnauthorized"); if ([manager state] == CBCentralManagerStateUnknown) NSLog(@"CBCentralManagerStateUnknown"); if ([manager state] == CBCentralManagerStateUnsupported) NSLog(@"CBCentralManagerStateUnsupported"); } 我无法弄清楚CBCentralManagerStateUnknown含义。 我该怎么办? 苹果文档只是说: 状态不明,更新即将发生。 我在蓝牙设备连接的情况下以及蓝牙closures的情况下得到了这个响应。 如果我尝试运行类似[manager […]

CBPeripheral的名字有时是空的

我正在开发一个应用程序来与蓝牙LE外设通信。 我目前正在testing的外设就是其中之一。 有趣的是,有时当我发现它的时候,我得到它的专有名称“SimpleBLEPeripheral”,有时我只是得到(null) 。 似乎没有任何命令我可以发送给CBPeripheral强制更新名称,所以我怎么才能确保我实际上得到了外设的广告名称?

如何使用IOBluetooth / CoreBluetooth服务请求?

我想要做的是在我的Mac上从我的iPhone使用Apple通知中心服务(ANCS)。 为了让我的iPhone在我的iPhone的蓝牙设置中显示,我显然需要使用服务请求。 我到目前为止所尝试的是在我的Mac上启动一个CBPeripheralManager ,添加ANCS服务并开始广告。 这似乎并没有这样做,因为我的Mac没有出现在我的iPhone的蓝牙设置。 我也试过的是启动一个CBCentralManager并开始扫描,在CBCentralManagerScanOptionSolicitedServiceUUIDsKey键中的ANCS UUID也不起作用。 有没有人有如何做到这一点的想法? 我花了好几个小时看WWDCvideo和浏览苹果的文档,但除了一些模糊的“服务请求”提到之外,我找不到它。 谢谢!

在IOS中检测IOS7中启用蓝牙的iPhone设备

我在我的应用程序中使用核心蓝牙框架。 我知道如何扫描外围设备并从中获取数据(如心率监视器) 但我想要的是检索周围的iPhone设备列表,支持BLE 4.0和蓝牙启用的。 我提到下面的链接.. 使用IOBluetooth Framework 使用CoreBluetooth获取外设而不是设备列表 – (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { // I'm not sure how to make this work NSLog (@"Discovered peripheral: %@", [peripheral name]); [self.list addObject:peripheral.name]; // add peripheral name to foundarray NSLog (@"UUID peripheral: %@", [peripheral UUID]); NSLog (@"peripheral services before connected: %@", [peripheral services]); […]

从BLE设备读取数据

我试图从蓝牙设备(BR-LE4.0-S2)读取数据。 我能够连接BLE设备,但是无法从中读取数据。我没有任何有关BLE服务的规范和特性。 这里我的问题是- (void)peripheral:didUpdateValueForCharacteristic:error:没有得到调用。 我遵循教程“ https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/PerformingCommonCentralRoleTasks/PerformingCommonCentralRoleTasks.html#//apple_ref/doc/uid/TP40013257-CH3-SW2 ”。以下是我的码。 我的要求是从BLE设备连续读取数据。 任何帮助是极大的赞赏。 – (void)viewDidLoad { self.myCentralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; self.peripheral = [[CBPeripheral alloc] init]; self.peripheral.delegate = self; [super viewDidLoad]; } – (void) centralManagerDidUpdateState:(CBCentralManager *)central { switch (central.state) { case CBCentralManagerStatePoweredOn: [self.myCentralManager scanForPeripheralsWithServices:nil options:nil]; break; default: NSLog(@"Central Manager did change state"); break; } } – (void)centralManager:(CBCentralManager *)central […]