一直在赶项目,卡卡的赶,写安卓端的时候踩了不少坑,耽误不少时间。。尴尬。。。。。最近终于得闲,来简书做个笔记。年前写IOS端项目的时候,全部使用swift来写的,这里来做个记录。用Swift写项目还是比较好用的,所以整个项目写起来也很流畅,其实和使用OC写的基本一样,如果有其他不清楚的地方可以参阅前边的文章。
1.新建一个项目(选择使用Swift语言):
项目名称:BTTool.
项目目录结构如下(按我自己的习惯来的).
Model文件夹下:自定义一个Device类用来保存蓝牙外设对象
Tool:作为工具类来进行与蓝牙的连接和数据交互
我们准备两个页面,一个用来展示搜索到的设备,点击搜索到的设备之后连接成功并跳转到下一个界面也就是主界面开始进行数据交互。
2.开始写工具类代码:
首先定义需要使用的变量,并且初始化蓝牙对象。套路和OC的一样,只是语法上有所变化。
peripheralArray:这个数组用来存放搜索到的外设对象,作为接下来展示设备列表的数据源。
实现扫描,停止扫描,连接设备,断开连接这四个方法,方便接下来调用。然后实现CBPeripheralDelegate,CBCentralManagerDelegate的回调:
这里要注意,扫描到外设对象的时候要做一个过滤,因为一个外设对象在我们开始扫描之后可能被多次扫描到,这里过滤之后防止重复向数据源数组中添加此对象。
连接成功之后,首先停止扫描,然后设置peripheral的代理,并且开始扫描目标服务。
扫描到服务之后,开始寻找该服务中的特征。如果发现特征成功,开始遍历这些特征,拿到我们需要的读写订阅特征并保存到对应的属性中。
拿到对应的读写特征之后,就可以和外设进行数据交互了,准备工作已经做好。这里要注意拿到notify特征之后一定要进行注册。注册是否成功也会有一个回调来通知我们:
与外设的数据交互:
1.读取外设发来的数据:
2.写入数据以及写入状态的回调:
好了到此为止,工具类的代码就是这样了。我们只需要在其他需要使用的地方调用就好了。
其他地方的实现在这里就不在赘述,demo我会放到github上作为参阅。其实这里的东西和OC来实现的相差不是很多,但是也还有很多地方需要注意,一不小心也会掉坑里。套路还是一样的套路,和OC写的一样,写这个笔记是为了自己查阅方便,还有给不太熟悉Swift的小伙伴做一个参考。这个demo我自己使用开发板做了实验,通讯正常。有需要的小伙伴可以直接拿去使用,要是有其他不清楚的地方,可以参阅前边的笔记。