iOS蓝牙连接其实不难,可以参照官方的例子教程或者使用github的开源库babyBluetooth。
iOS蓝牙连接的流程如下:
通过服务的UUID扫描外部设备 -> 连接外部设备 -> 连接成功后扫描设备的服务 -> 发现服务后,扫描该服务的Characteristics -> 扫描到Characteristics后,进行读、写、订阅 -> 读和订阅后,有数据回来,会回调一个代理方法didUpdateValueForCharacteristic
获得数据。
下面介绍一下官方教程的代码,因为iOS是作为主端,所以只介绍主端的代码,从端的代码示例代码也有,可以参考,并不难。
主端官方的例子主要是参照BTLECentralViewController.m
这个文件。iOS原生的蓝牙基本是使用了代理方法的结构来处理蓝牙功能。基本上流程的一步对应一个代理方法。
创建CBCentralManager对象,并设置好它的代理。
|
|
使用CBCentralManager扫描外部设备,这个需要传递外部设备的服务的UUID,如果不传递的话,那么就会扫描所有设备。代码如下,
|
|
发现设备后会回调一个代理方法,
|
|
在这个方法里面连接设备
|
|
设备连接成功后会回调一个方法,先停止扫描,然后在这个方法里面扫描设备的服务。如果不传服务的UUID,那么会扫描所有服务。
|
|
扫描到服务后继续调用另外回调方法,在这个方法扫描Characteristics
|
|
发现Characteristics后继续回调另外一个方法。这里面可以判断一下Characteristics的UUID,对需要订阅的Characteristics进行订阅,或者读写数据。
|
|
如果读取或者订阅的Characteristic有更新,那么就会调用下面的方法。
|
|
如果要断开连接,调用下面方法
|
|