iOS蓝牙4.0(BLE)开发(一)

    本文是参考了网上众多资料总结。
    做iOS开发也有很长时间了一直没有时间和机会做蓝牙方面的开发。2016年由于工作需要,开始接触蓝牙开发,刚开始做的时候在网上搜索各种文章,网上虽然关于这方面的东西也有很多,但是讲解的比较详细的少之又少。

一、iOS和蓝牙相关的框架

  • GameKit.framework 多用于游戏开发,仅限于iOS设备之间的连接。
  • MultipeerConnectivity.framework 这个就是iOS设备之间互相传文件用的。
  • ExternalAccessory.framework 这个框架可以用于和第三方蓝牙进行交互,但是必须是MFI(make for iPhone、iPad、iPod等设备),但是这种设备需要经过苹果的认证,而且比较困难,所以用的相当少。
  • CoreBluetooth.framework 主要用于和第三方蓝牙的交互,这个不需要苹果的认证,但是必须是蓝牙4.0以上的设备,蓝牙4.0也叫BLE(Bluetooth Low Energy)所以一般都称之为BlE开发,从iPhone4s及其以后的设备都是支持BLE,这是我们主讲的。

一般情况下现在所说的iOS蓝牙开发也都是BLE开发。我们现在所做的智能家居,智能手环,类似的这些东西基本都是使用的这种方式与iPhone连接的。

二、CoreBluetooth框架简介

1. 两个核心概念

CBCentral :中心设备。一般为主动发起连接的设备就是中心设备。
CBPeripheral :外围设备。比如你用你手机的APP去连接你的智能手环,此时,你的手机叫中心设备,手环就叫外部设备。一般为被连接的设备。又比如,如果是电脑发起连接来连接你的手机,那么此时你的手机就变成了外设,所以说手机可以作为中心设备,也可以作为外部设备。

2. 其他概念

服务:每一个外部设备都会拥有若干个服务,比如说你的智能手环可能会拥有一个管理你心率的服务,还有一个管理你跑步情况的服务。这些服务是你的硬件工程师设定的,作为我们在开发的时候只需要知道有哪些服务就可以了,每一个服务都会有一个唯一的UUID,就是一个字符串,用于辨别区分是哪个服务(外部设备也会有其对应的一个UUID),如果你连接到这个设备的话,你是可以搜索到这些服务的。
特征:每一个服务里边都会有若干个特征,我们就是通过这些特征值来与设备进行交互的,还拿手环的例子来说,比如在它的管理你跑步情况的服务中可能有两个特征值,一个特征是读取手环内你跑步的数据,一个特征是用于你的APP发送数据给这个服务,进行一些设置什么的,同样每个服务中的特征也是由你的硬件工程师设置好的,你只需要用就好了,当然这些特征值也会有其对应的一个唯一的UUID。
特征的属性:这些个特征的属性也是不尽相同有的是用来读数据的,有的是用来订阅通知的,有的是用来发送数据的,这些属性同样也都是设定好的,我们只需要知道哪一个特征是什么属性就好了。这些属性种类有一个枚举:

typedef NS_OPTIONS(NSUInteger, CBCharacteristicProperties) {
    CBCharacteristicPropertyBroadcast                                               = 0x01,
    CBCharacteristicPropertyRead                                                    = 0x02,
    CBCharacteristicPropertyWriteWithoutResponse                                    = 0x04,
    CBCharacteristicPropertyWrite                                                   = 0x08,
    CBCharacteristicPropertyNotify                                                  = 0x10,
    CBCharacteristicPropertyIndicate                                                = 0x20,
    CBCharacteristicPropertyAuthenticatedSignedWrites                               = 0x40,
    CBCharacteristicPropertyExtendedProperties                                      = 0x80,
    CBCharacteristicPropertyNotifyEncryptionRequired NS_ENUM_AVAILABLE(NA, 6_0)     = 0x100,
    CBCharacteristicPropertyIndicateEncryptionRequired NS_ENUM_AVAILABLE(NA, 6_0)   = 0x200
};
3. CoreBluetooth框架其实就包含了两种场景:

场景一:手机作为中心设备
场景二:手机作为外围设备
这两种场景分别有一组相应的API和类。如图所示:


Core Bluetooth Object Model

如果我们现在要开发一个智能手环,那么我们的手机就充当了中心设备的角色所以将会使用左边的这组类;
反之如果我们要将我们的手机作为外围设备来开发,那么就会使用右边的这组。一般情况下我们使用左边的这组会相应的多一点。

三、CoreBluetooth框架的基本使用流程

1. 中心设备

创建中心设备的对象——>搜索外部设备——>连接目标外部设备——>扫描到外设中的服务——>获取到其中的特征——>通过这些特征于设备做数据的交互——>交互完毕断开连接

2. 外围设备

创建外部设备对象——>设置自己的服务,特征,权限等——>发布广告——>设置订阅以及读写特征的委托方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 什么是蓝牙? 随着蓝牙低功耗技术BLE(Bluetooth Low Energy)的发展,蓝牙技术正在一步步成熟,...
    一字码阅读 1,738评论 0 11
  • 小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth 本项目为对小米手环进行二次开发,利用了小米...
    Minecode阅读 5,102评论 8 9
  • 昨天又被同学叫去吃饭了,这次饭吃了之后,加重了我的迷茫。前段时间我一直想她,那个电话打之后,思考了一个晚上,其实也...
    学长酱阅读 169评论 0 0
  • 满腔无法说出口的恐慌,不知该何处安放。 白天的谈笑风生过后,是无数个合上眼却难以安然入睡的夜。 不知道是第多少个夜...
    青二才不才阅读 184评论 1 3
  • 每一个人,都有一部心酸血泪史。 去追寻不愿回忆的回忆,完成一次鲜血淋漓的自我解剖。
    刘樊婷阅读 237评论 0 0