iOS - Bluetooth 蓝牙

简介: 1、蓝牙介绍具体讲解见 蓝牙技术信息 蓝牙协议栈2、iBeacon具体讲解见 BeaconiBeacon 是苹果公司 2013 年 9 月发布的移动设备用 OS(iOS7)上配备的新功能。

1、蓝牙介绍

2、iBeacon

  • 具体讲解见 Beacon

  • iBeacon 是苹果公司 2013 年 9 月发布的移动设备用 OS(iOS7)上配备的新功能。其工作方式是,配备有低功耗蓝牙(BLE)通信功能的设备使用 BLE 技术向周围发送自己特有的 ID,接收到该 ID 的应用软件会根据该 ID 采取一些行动。比如,在店铺里设置 iBeacon 通信模块的话,便可让 iPhone 和 iPad 上运行一资讯告知服务器,或者由服务器向顾客发送折扣券及进店积分。此外,还可以在家电发生故障或停止工作时使用 iBeacon 向应用软件发送资讯。

  • 苹果 WWDC 14 之后,对 iBeacon 加大了技术支持和对其用于室内地图的应用有个更明确的规划。苹果公司公布了 iBeacon for Developers 和 Maps for Developers 等专题页面。

3、iOS 蓝牙

3.1 常见简称

  • MFi:make for ipad ,iphone, itouch 专们为苹果设备制作的设备,开发使用 ExternalAccessory 框架。认证流程挺复杂的,而且对公司的资质要求较高,详见 iOS - MFi 认证

  • BLE:buletouch low energy,蓝牙 4.0 设备因为低耗电,所以也叫做 BLE,开发使用 CoreBluetooth 框架

  • GATT Profile(Generic Attribute Profile):GATT 配置文件是一个通用规范,用于在 BLE 链路上发送和接收被称为 “属性”(Attribute)的数据块。目前所有的 BLE 应用都基于 GATT。
    • 1) 定义两个 BLE 设备通过叫做 Service 和 Characteristic 的东西进行通信。中心设备和外设需要双向通信的话,唯一的方式就是建立 GATT 连接。
    • 2) GATT 连接是独占的。基于 GATT 连接的方式的,只能是一个外设连接一个中心设备。
    • 3) 配置文件是设备如何在特定的应用程序中工作的规格说明,一个设备可以实现多个配置文件。
  • GAP(Generic Access Profile):用来控制设备连接和广播,GAP 使你的设备被其他设备可见,并决定了你的设备是否可以或者怎样与合同设备进行交互。
    • 1) GATT 连接,必需先经过 GAP 协议。
    • 2) GAP 给设备定义了若干角色,主要两个:外围设备(Peripheral)和中心设备(Central)。
    • 3) 在 GAP 中外围设备通过两种方式向外广播数据:Advertising Data Payload(广播数据)和 Scan Response Data Payload(扫描回复)。
  • Profile:并不是实际存在于 BLE 外设上的,它只是一个被 Bluetooth SIG(一个以制定蓝牙规范,以推动蓝牙技术为宗旨的跨国组织)或者外设设计者预先定义的 Service 的集合。

  • Service:服务,是把数据分成一个个的独立逻辑项,它包含一个或者多个 Characteristic。每个 Service 有一个 UUID 唯一标识。UUID 有 16 bit 的,或者 128 bit 的。16 bit 的 UUID 是官方通过认证的,需要花钱购买,128 bit 是自定义的,可以自己设置。每个外设会有很多服务,每个服务中包含很多字段,这些字段的权限一般分为读 read,写 write,通知 notiy 几种,就是我们连接设备后具体需要操作的内容。

  • Characteristic:特征,GATT 事务中的最低界别,Characteristic 是最小的逻辑数据单元,当然它可能包含一个组关联的数据,例如加速度计的 X/Y/Z 三轴值。与 Service 类似,每个 Characteristic 用 16 bit 或者 128 bit 的 UUID 唯一标识。每个设备会提供服务和特征,类似于服务端的 API,但是机构不同。

  • Description:每个 Characteristic 可以对应一个或多个 Description 用户描述 Characteristic 的信息或属性。

  • Peripheral、Central:外设和中心,发起连接的是 Central,被连接的设备为 Peripheral。

3.2 工作模式

  • 蓝牙通信中,首先需要提到的就是 central 和 peripheral 两个概念。这是设备在通信过程中扮演的两种角色。直译过来就是 [中心] 和 [周边(可以理解为外设)]。iOS 设备既可以作为 central,也可以作为 peripheral,这主要取决于通信需求。

    • 例如在和心率监测仪通信的过程中,监测仪作为 peripheral,iOS 设备作为 central。区分的方式即是这两个角色的重要特点:提供数据的是谁,谁就是 peripheral;需要数据的是谁,谁就是 central。就像是 client 和 server 之间的关系一样。

      Bluetooth14

  • 那怎么发现 peripheral 呢

    • 在 BLE 中,最常见的就是广播。实际上,peripheral 在不停的发送广播,希望被 central 找到。广播的信息中包含它的名字等信息。如果是一个温度调节器,那么广播的信息应该还会包含当前温度什么的。那么 central 的作用则是去 scan,找到需要连接的 peripheral,连接后便可进行通信了。

    • 当 central 成功连上 peripheral 后,它便可以获取 peripheral 提供的所有 service 和 characteristic。通过对 characteristic 的数据进行读写,便可以实现 central 和 peripheral 的通信。

  • CoreBluetooth 框架的核心其实是两个东西,central 和 peripheral, 对应他们分别有一组相关的 API 和类。

    • 这两组 API 分别对应不同的业务场景,如下图,左侧叫做中心模式,就是以你的手机(App)作为中心,连接其他的外设的场景。而右侧称为外设模式,使用手机作为外设连接其他中心设备操作的场景。

      Bluetooth13

  • iOS 设备(App)作为 central 时:

    • 当 central 和 peripheral 通信时,绝大部分操作都在 central 这边。此时,central 被描述为 CBCentralManager,这个类提供了扫描、寻找、连接 peripheral(被描述为 CBPeripheral)的方法。

    • 下图标示了 central 和 peripheral 在 Core Bluetooth 中的表示方式:

      Bluetooth16

    • 当你操作 peripheral 的时候,实际上是在和它的 service 和 characteristic 打交道,这两个分别由 CBService 和 CBCharacteristic 表示。

  • iOS 设备(App)作为 Peripheral 时:

    • 在 OS X 10.9

目录
相关文章
|
缓存 iOS开发 Perl
iOS蓝牙打印小票(打印发票二维码的指令)
iOS蓝牙打印小票(打印发票二维码的指令)
521 0
iOS蓝牙打印小票(打印发票二维码的指令)
|
7月前
|
小程序 JavaScript API
支付宝微信小程序连接蓝牙兼容IOS和安卓(开源)
支付宝微信小程序连接蓝牙兼容IOS和安卓(开源)
93 0
|
10月前
|
小程序 Android开发 iOS开发
微信小程序连接蓝牙工具类支持IOS和安卓
微信小程序连接蓝牙工具类支持IOS和安卓
159 0
|
移动开发 前端开发 JavaScript
IOS开发:UniAPP实现BLE低功耗蓝牙开发1
1、Uni-app介绍 2、Uni-app优点 3、BLE开发流程
IOS开发:UniAPP实现BLE低功耗蓝牙开发1
|
物联网 Android开发 iOS开发
iOS开发 - 蓝牙学习的总结
iOS开发 - 蓝牙学习的总结
129 0
|
缓存 Swift iOS开发
iOS 蓝牙设备名称缓存问题总结
iOS 蓝牙设备名称缓存问题总结
388 0
|
网络协议 物联网 API
iOS小技能: app因蓝牙功能隐蔽而导致上架被拒绝的解决方案
iOS小技能: app因蓝牙功能隐蔽而导致上架被拒绝的解决方案
715 0
|
iOS开发
iOS蓝牙状态的处理(蓝牙关闭及未授权的处理)
iOS蓝牙状态的处理(蓝牙关闭及未授权的处理)
912 0
iOS蓝牙状态的处理(蓝牙关闭及未授权的处理)
|
iOS开发
iOS蓝牙打印商品价格标签的模板及打印交易小票的模版
iOS蓝牙打印商品价格标签的模板及打印交易小票的模版
238 0
iOS蓝牙打印商品价格标签的模板及打印交易小票的模版
|
iOS开发
iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等
iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等
186 0
iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等