IOS蓝牙4.0(BLE)开发一基本概念

前言:项目中需要蓝牙开发,跌跌撞撞总算开发完成,记录一下。

一、IOS中关于蓝牙的框架有四个:

(1)GameKit.framework 多用于游戏开发,仅限于ios设备之间的连接。
(2)MultipeerConnectivity.framework 这个就是ios设备之间互相传文件用的。
(3)ExternalAccessory.framework 这个框架可以用于和第三方蓝牙进行交互,但是必须是MFI(make for iphone,iPad,ipod。。。等等)设备,但是这种设备需要经过苹果的认证,而且比较困难,所以用的相当少。
(4)CoreBluetooth.framework 这就是我们的主角了,主要用于和第三方蓝牙的交互,这个不需要苹果的认证,但是必须是蓝牙4.0以上的设备(现在基本都是了),蓝牙4.0也叫BLE(Bluetooth Low Energy)所以一般都称之为BlE开发,从iPhone4s及其以后的设备都是支持BLE的。
       所以说IOS的BLE开发其实就是CoreBluetooth.framework这个框架的使用,一般情况下现在所说的IOS蓝牙开发也都是BLE开发。我们现在所做的智能家居,智能手环,类似的这些东西基本都是使用的这种方式与iPhone连接的。

二、CoreBlueTooth

1.简介:

  • 可用于第三方蓝牙设备交互,设备必须支持蓝牙4.0
  • iPhone的设备必须是4S或者更新
  • iPad设备必须是iPad mini或者更新
  • iOS的系统必须是iOS 6或者更新
  • 蓝牙4.0以低功耗著称,所以一般被称为BLE(bluetooth low energy)
  • 使用模拟器调试
    • Xcode 4.6
    • iOS 6.1
  • 应用场景
    • 运动手环
    • 智能家居 
    • 拉卡拉蓝牙刷卡器

核心概念

  • CBCentralManager:中心设备(用来连接到外部设备的管家)
  • CBPeripheralManager:外部设备(第三方的蓝牙4.0设备)


比如手机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 };

外设、服务、特征间的关系





蓝牙中心模式流程


1. 建立中心角色


2. 扫描外设(discover)


3. 连接外设(connect)


4. 扫描外设中的服务和特征(discover)


    - 4.1 获取外设的services


    - 4.2 获取外设的Characteristics,获取Characteristics的值,获取Characteristics的Descriptor和Descriptor的值


5. 与外设做数据交互(explore and interact)


6. 订阅Characteristic的通知


7. 断开连接(disconnect)


蓝牙外设模式流程


1. 启动一个Peripheral管理对象


2. 本地Peripheral设置服务,特性,描述,权限等等


3. Peripheral发送广告


4. 设置处理订阅、取消订阅、读characteristic、写characteristic的委托方法



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值