由于接到iphone需要和第三方蓝牙设备交互的任务,便开始了蓝牙开发这件事。
在探索了一段时间后,iOS的蓝牙开发相关Apple大致有以下几种方式。
1 GameKit.framework
【只能存在于iOS设备之间,多用于游戏
能搜索到的demo比较多,不确切说名字了,code4app里面就有】
2 CoreBlueTooth.framework
【必须要支持蓝牙4.0,且iPhone4以上,即至少4s手机。可与第三方设备交互数据,
官方demo是Temperature Sensor 】
3 ExternalAccessory.framework
【可于第三方蓝牙设备交互,但是蓝牙设备必须经过MFI认证,需要有苹果的协议,
官方demo是 EADemo和 BTLE】
4 Multipeer Connectivity.framework
【只能用于iOS设备之间,且iOS7才引入。主要是为了共享文件,但是文件是在sandbox内
官方demo是ios7 sample】
由于我是做的接入第三方蓝牙设备的,故只能采取2 还 3 方式。
但又由于3方式需要经过苹果公司的MFI认证,而国内很多蓝牙提供商事没有经过这个认证的所以我们采用了第二种方式。CoreBlueTooth,也就是通过蓝牙4.0的 BLE模式来进行开发。
下面详细介绍一下BLE开发模式在iOS下的应用方式。
首先BLE将蓝牙设备分为了两类:
一 中央设备(Central)
二 外围设备(Peripheral)
这两个设备的交互方式如下:
首先外围设备会广播自身的信息,这时中央设备如果启用检索发现功能,就会发现广播的外围设备并得到这些外围设备的列表。
中央设备选择你需要连接的外围设备连接上。这时中央设备和外围设备交互的第一步就被打通了。
详细分析接下来的步骤如下图:
左侧为中央设备(Central),右侧为外围设备(Peripheral) 。
这里我以Central连接Peripheral,并向Peripheral发送数据为例,结合代码进行分析。
步骤如下:
1 中央设备查找外围设备通过上图中的CBCentralManager,并显示出各外围设备的名称以及UUID,也可通过回调显示每个Peripheral的信号强度。
[调用系统函数为]:
2 连接你所需要连接的Peripheral,这里就是上图中的CBPeripheral对象。
[调用系统函数为]:
3 查找对应的服务,查找对应服务下的CBCharacteristic。
[调用系统函数为]:
4 向对应的CBCharactieristic发送数据。发送数据和接收数据共有4种方式。
[调用系统函数为]: