现在项目有一个需求就是做空中升级,以前都是用官方代码进行升级的,但是代码使用的framework用的是swift,目前项目又是用OC写的,所以我们要进行混编,步骤如下:
1.使用CocoaPods安装iOSDFULibrary,官方下载地址:https://github.com/NordicSemiconductor/IOS-Pods-DFU-Library
2.安装完成后新建一个swift类,系统会提示是否建立桥接文件,点击创建

3.修改配置:

4.在需要使用的oc类中导入头文件:#import<iOSDFULibrary/iOSDFULibrary-Swift.h>即可使用了
5.前期工作完成的差不多了,接下来就开始升级了,基本步骤就下面几点:
1>连接需要升级的蓝牙设备,向设备写升级指令,让设备处于升级状态
2>设备处于升级状态后,会自动断开,然后产生dfu开头名字的设备,连接这个设备
3>初始化DFUServiceInitiator,开始升级。传入的CBCentralManager,和CBPeripheral都是dfu设备的
4>等待升级完成
直接上代码:
1.声明属性

2.请求服务器下载升级文件,保留在本地
3.上传文件

4.实现代理,在代理方法中可获取进度,更新的状态等

网友评论