最近做的项目主要是iphone与平常的一些设备进行蓝牙连接,通信等功能。所以整理了一下蓝牙方面的一些知识。
iOS蓝牙开发主要有种方式。
1 GameKit.framework iOS7之前的蓝牙通讯框架,从iOS7开始过期,但是目前多数应用还是基于此框架。只能用于iOS设备之间,多用于游戏。
2 MultipeerConnectivity.framework iOS7开始引入的新的蓝牙通讯开发框架,用于取代GameKit。也只能用于iOS设备间,主要用于共享文件。
3 CoreBluetooth.framework 功能强大的蓝牙开发框架,要求设备必须支持蓝牙4.0,可与其他第三方设备进行通信。
4 ExternalAccessory.framework 也可于第三方蓝牙设备交互,但是蓝牙设备必须经过MFI认证,需要有苹果的协议,这就有一定的局限性。
对比明显可以看到CoreBluetooth这个比较好用,并且功能强大,不再局限于iOS设备之间进行传输数据,你可以通过iOS设备向Android、Windows Phone以及其他安装有蓝牙4.0芯片的智能设备传输,因此也是目前智能家居、无线支付等热门智能设备所推崇的技术。我这里介绍一下这个的使用。
CoreBluetooth.framework
从iOS6开始苹果推出了此框架,它专门用于与BLE4.0设备通信,不仅限于iOS设备。
CoreBluetooth框架的核心其实是两个东西,peripheral和central, 可以理解成外设和中心。类似于C/S设计(客户端和服务端),外围设备可以理解为客户端,中央设备可以当作服务端。
外围设备和中央设备在CoreBluetooth中使用CBPeripheralManager和CBCentralManager表示。
CBPeripheralManager:外围设备通常用于发布服务、生成数据、保存数据。外围设备发布并广播服务,告诉周围的中央设备它的可用服务和特征。
CBCentralManager:中央设备使用外围设备的数据。中央设备扫描到外围设备后会就会试图建立连接,一旦连接成功就可以使用这些服务和特征。
外围设备和中央设备之间交互的桥梁是服务(CBService)和特征(CBCharacteristic),二者都有一个唯一的标识UUID(CBUUID类型)来唯一确定一个服务或者特征,每个服务可以拥有多个特征。
左侧表示中央设备