IOS开发-使用蓝牙(CoreBluetooth.f…

一.   先转一篇很好的博文:转自http://blog.csdn.net/chenli522/article/details/17114417

去App Store搜索并下载“LightBlue”这个App,对调试你的app和理解Core Bluetooth会很有帮助。

================================

Core Bluetooth for iOS 6

CoreBluetoothAPI是基于BLE4.0的标准的。这个框架涵盖了BLE标准的所有细节。仅仅只有新的iOS设备和Mac是和BLE标准兼容的:iPhone4SiPhone5MacMiniNew iPad,MacBook Air,MacBook Pro。还有iPhone iOS6的模拟器也支持。这是非常有用的,在你没有一个真正的iOS设备而用模拟器去调试你的程序。

相关的类

CoreBluetooth框架中,有两个主要的角色:周边和中央(Peripheral and Central ,整个框架都是围绕这两个主要角色设计的,他俩之间有一系列的回调交换数据。下图1展示了周边和中央(Peripheral and Central),还有他俩之间的关系。


周边(Peripheral)是生成或者保存了数据的设备,中央(Central)是使用这些数据的设备。所有可用的iOS设备可以作为周边(Peripheral)也可以作为中央(Central),但不可以同时既是周边也是中央。

周边和中央这两个角色在CoreBluetooth框架中是用两个类来表示的,CBPeripheralManager这个类代表周边,CBCentralManager 这个类代表中央。

在中央这边,一个CBPeripheral 对象代表着相应的和中央连接着的周边;同样的,在周边这边,一个CBCentral 对象代表着相应的和周边连接着的中央。

你可以认为周边是一个广播数据的设备,他广播到外部世界说他这儿有数据,并且也说明了能提供的服务。另一边,中央开始扫描附近有没有服务,如果中央发现了想要的服务,然后中央就会请求连接周边,一旦连接建立成功,两个设备之间就开始交换传输数据了。

除了中央和周边,我们还要考虑他俩交换的数据结构。这些数据在服务中被结构化,每个服务由不同的特征(Characteristics)组成,特征是包含一个单一逻辑值的属性类型。如果你去http://developer.bluetooth.org链接,你可以找到标准服务和特征的列表。

在中央这边,CBService 类代表服务,CBCharacteristic 类代表特征。在周边这边,CBMutableService 类代表服务,CBMutableCharacteristic 类代表特征。下图2展示了到目前为止我们所讲的所有类。


CBUUID CBATTRequest 是两个苹果公司给我们提供的帮助类,以便于开发者更简单地操作数据,稍后你将看到怎么使用这两个类。

用法

很不幸,苹果公司的CoreBluetooth文档目前不是很完整,一些复杂的类确实没有文档说明。你只能通过去看WWCD视频去理解这个框架是怎么工作的。因为在前一段时间我已经做过了这些,所以决定分享给大家。在NeuroSky,我们已经用CoreBluetooth框架开发了一些App。我很希望在这个教程可以帮到你。如果你想学到更多关于CoreBluetooth的知识,你可以出席我们的培训课,在这儿查看下一堂课: http://training.invasivecode.com

创建一个周边:

让我们开始创建一个完整的例子,你需要两个iOS设备。我将告诉你怎么连接2iOS设备,通过蓝牙交换数据,记住检查你的iOS设备是不是在上边列出的支持BLE的列表中。

开始创建一个周边,跟着以下步骤(计划):

1.创建并且开始Peripheral Manager

2.设置并且发布这个周边的所提供的服务。

3.广播这个服务。

4.和中央相互作用。

Single-View Application模板创建一个新的Xcode工程。命名为BlueServer (使用ARC)。工程创建完成后,添加CoreBluetooth.framework 框架。然后打开ViewController.h文件,并且添加以下代码:

#import 

使view controller继承CBPeripheralManagerDelegate 协议,然后添加这个属性:

@property (nonatomic, strong) CBPeripheralManager *manager;

ViewController.m中,添加以下代码到viewDidLoad方法中:

self.manager [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];

这行代码创建了一个Peripheral Manager(计划中的第一项)。第一个参数是设置代理,这儿就是view controller,第二个参数设置为nil,因为Peripheral ManagerRun在主线程中。如果你想用不同的线程做更加复杂的事情,你需要创建一个队列(queue)并将它放在这儿。

一旦Peripheral Manager被创建,我们应该及时地检查它的状态,看正在运行App的这个设备是不是支持BLE标准。所以要实现以下这个代理方法,在这儿你可以做更复杂的一些事情和友好地提醒用户,如果设备不支持BLE

(void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral {

    switch (peripheral.state) {

        case CBPeripheralManagerStatePoweredOn:

            [self setupService];

            break;

        default:

            NSLog(@"Peripheral Manager did change state");

            break;

    }

}

这儿,我检查了周边的状态,如果他的状态是CBPeripheralManagerStatePoweredOn,这个设备是支持BLE并且可用的。

服务和特征(Service and Characteristic)

setup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值