美文网首页蓝牙
iOS蓝牙之扫描、链接、读写数据(一)

iOS蓝牙之扫描、链接、读写数据(一)

作者: 海耐射手 | 来源:发表于2018-11-30 16:31 被阅读0次

前段时间做了一个通过蓝牙BLE连接秤的项目,在做蓝牙的读写这块踩坑不少,在此与大家分享一下踩坑过程!同时为有些想了解蓝牙或正在踩坑的你提供一点点帮助(PS:由于自己也是第一次做蓝牙模块内容,有不对的地方还希望大神指正,小弟不胜感激......)

一、先为大家简单介绍有关蓝牙iOS开发的知识:

蓝牙一般分为传统蓝牙和蓝牙低能耗(简称:BLE)两种模式:传统蓝牙可以传输音频等较大数据量,距离近、功耗相对大;而BLE则用来传输节点数据,传输数据量十分小,多数情况处于休眠状态,因而功耗十分低,被广泛的应用于智能穿戴设备。

二、在做蓝牙开发之前,最好先了解一些概念:

GATT 连接需要特别注意的是:GATT 连接是独占的。也就是一个 BLE 外设同时只能被一个中心设备连接。一旦外设被连接,它就会马上停止广播,这样它就对其他设备不可见了。当设备断开,它又开始广播。

GATT(参考链接:https://www.race604.com/gatt-profile-intro)

三、蓝牙和版本的使用限制

蓝牙2.0 ===> 越狱设备 

蓝牙4.0 ===> IOS6 以上 

MFI认证设备(Make For ipod/ipad/iphone) ===> 无限制

四、蓝牙开发分为两种模式:管理者模式和中心者模式。

管理者模式:相当于iPhone手机作为外设,自己创建服务和特性,然后用其他设备连接iPhone手机(很少用)

中心者模式:使用中心者模式开发相当于iPhone手机作为主机,连接蓝牙外设(常用)。

下面介绍蓝牙开发的例子就是使用的中心者模式来说明

五、蓝牙常见名称和缩写

BLE:(Bluetooth low energy)蓝牙4.0设备因为低耗电;

Central:中心设备,相对比较强大,用来连接其他外围设备(手机);

Peripheral:外围设备,这一般就是非常小或者简单的低功耗设备,用来提供数据,并连接到一个更加相对强大的中心设备(小米手环);

Services:服务,蓝牙外设对外广播的必定会有一个服务,可能也有多个,服务下面包含着一些特征,服务可以理解成一个模块的窗口;

Characteristic:特征,存在于服务下面的,一个服务下面也可以存在多个特征,特征可以理解成具体实现功能的窗口,一般特征都会有value,也就是特征值,特征是与外界交互的最小单位;

Description:描述,每个Characteristic可以对应一个或多个Description用于描述Characteristic的信息或属性(暂时不太了解)

UUID:可以理解成蓝牙上的唯一标识符(硬件上是Mac值,iOS应该是被系统拦截了,所以获取不到Mac值,相对于转化而来是的UUID),为了区分不同的服务和特征,或者给服务和特征取名字,我们就用UUID来代表服务和特征。

六、蓝牙连接可以大致分为以下几个步骤

1、建立一个Central Manager实例进行蓝牙管理

2、搜索外围设备

3、连接外围设备

4、获得外围设备的服务

5、获得服务的特征

6、从外围设备读数据

7、给外围设备发送数据

具体代码实现请见下篇:iOS蓝牙之扫描、链接、读写数据(二)

相关文章

网友评论

    本文标题:iOS蓝牙之扫描、链接、读写数据(一)

    本文链接:https://www.haomeiwen.com/subject/ngqyqqtx.html