美文网首页workiOS实战selector
iOS蓝牙开发---CoreBluetooth[BLE 4.0]

iOS蓝牙开发---CoreBluetooth[BLE 4.0]

作者: iOS_ZK03 | 来源:发表于2016-12-09 11:28 被阅读2549次

一、蓝牙基础知识

(一)常见简称

   1.MFI  make for ipad ,iphone, itouch 专们为苹果设备制作的设备,开发使用ExternalAccessory 框架(认证流程貌似挺复杂的,而且对公司的资质要求较高),详见:关于MFi认证你所必须要知道的事情

  2.BLE buletouch low energy,蓝牙4.0设备因为低耗电,所以也叫做BLE,开发使用CoreBluetooth 框架(因为苹果系统的更新与设备,当下苹果设备蓝牙都是支持蓝牙4.0[BLE(Bluetoothlow energy)],关于普通蓝牙ExternalAccessory这里就不做介绍)

(二)两种模式

    1.CBCentralMannager 中心模式 :以手机(app)作为中心,连接其他外设的场景     

    2. CBPeripheralManager 外设模式:使用手机作为外设连接其他中心设备操作的场景

PS:因为苹果设备的安全性和封闭性,苹果设备不能通过与其他设备蓝牙链接进行文件传输等功能,所以在iOS与蓝牙开发的编程中是CBCentralMannager 中心模式编程居多.

iOS蓝牙开发系统库

(三)CBPeripheral 、CBService、CBCharacteristic

    一个CBPeripheral可以在设备列表搜索到一个或多个CBService,一个CBService对应一个或多个CBCharacteristic,每一个CBCharacteristic对应着蓝牙设备的不同属性,通过读的CBCharacteristic可以获取到蓝牙设备发送出来的信息,通过写的CBCharacteristic可以由客户端向蓝牙设备发送指令.

(四)关于蓝牙系统开发库的初步认识

当我们使用CoreBluetooth系统框架进行蓝牙开发的时候,有时候某种功能需要和指定的蓝牙设备进行操作,这就需要我们拿到蓝牙设备的唯一标识,来确定是哪一台设备,先看下一当我们扫描到的蓝牙设备时,所能拿到的属性:

获取蓝牙外设信息的类 蓝牙外设各种状态

在开发蓝牙编程中,蓝牙外设的设备名称,设备UUID,设备读写属性的UUIDD可以通过与硬件厂商沟通获取到或者通过蓝牙助手进行获取,iOS蓝牙4.0的开发基于和搜索到UUID进行匹配,然后建立通信通道,因此关于设备的UUID至关重要.

二.蓝牙编程开发

     (一) 准备工程

         1,设置需要进行链接的设备名称,设备UUID,服务UUID

蓝牙设备基础信息

      2.引入头文件,遵循代理,创建蓝牙开发对象

#import  <CoreBluetooth/CoreBltooth.h>        //蓝牙开发引用的系统库

<CBCentralManagerDelegate,CBPeripheralDelegate>  //蓝牙中心模式开发遵循的代理

@property (nonatomic,retain) CBCentralManager *manager;  //蓝牙操作对象

@property (nonatomic,retain) CBPeripheral *peripheral;      //获取蓝牙设备信息的对象

@property (nonatomic,retain) CBCharacteristic *characteristic;  //蓝牙设备读写服务操作对象

三.小结

       当下各种智能硬件的兴起,客户端链接外设需求开始多起来,由于公司智能医疗设备的接入,使作者对于iOS蓝牙接入头疼了一个月,这一个月也是遇到好多巨坑,瑾以此篇献给那些奋斗在蓝牙第一线和需要了解蓝牙开发的小伙伴们,希望各位小伙伴能对我文章予以斧正,通过留言@我,或者直接发送邮件到924476038@qq.com[因为接触简书时间不长,对于代码块这个技能还没get到],望各位理解

PS:如果这篇无法使大家能完全理解蓝牙编程,不能很好的去应用,大伙可以看看这篇,这篇主讲的是蓝牙在项目实战中使用,希望可以对你有所帮助   蓝牙实战

PS:好几位同学都简信或者QQ联系我说能否提供一份Demo,这肯定是可以的,这是对我的文章最大的肯定.

文章demo地址:github.com/iOSzhangkai/BLE4.0_iOS

相关文章

  • iOS 蓝牙BLE4.0开发

    蓝牙开发,现在普遍的都是BLE4.0低功耗蓝牙,CoreBluetooth是iOS 开发I比较推荐的一种开发方法...

  • iOS蓝牙4.0基础开发

    1.蓝牙开发基础 蓝牙4.0是低电量模式所以也叫4.0BLE。本文将使用iOS系统提供的CoreBluetooth...

  • iOS蓝牙开发---CoreBluetooth[BLE 4.0]

    一、蓝牙基础知识 (一)常见简称 1.MFI make for ipad ,iphone, itouch 专们...

  • iOS蓝牙4.0,收发数据设计

    iOS蓝牙开发,现在常规使用的是CoreBlueTooth.framework,即蓝牙4.0开发框架。 1.CBC...

  • iOS蓝牙开发(bluetooth)

    蓝牙库( 4.0 BLE ) 苹果自身有一个操作蓝牙的库 CoreBluetooth.framework,这是 大...

  • iOS CoreBluetooth

    CoreBluetooth 在iOS和Mac应用中,CoreBluetooth框架用来与BLE(低功耗蓝牙)设备通...

  • CoreBluetooth

    iOS-BLE蓝牙开发持续更新 - 简书 蓝牙打印小票 一个第三方 IOS BLE4.0蓝牙和外设连接和收发数据的...

  • iOS BlueTooth HID(Human Interfac

    1.HID做什么用的? 在iOS蓝牙开发当中,现在的主流是使用蓝牙4.0,使用CoreBluetooth来进行开发...

  • iOS蓝牙4.0开发Peripheral(CoreBluetoo

    上篇文章iOS蓝牙4.0开发Central(CoreBluetooth) - 简书已经讲述了作为中央设备的...

  • iOS蓝牙实现汇总

    一、相关介绍 CoreBluetooth专门用于与BLE设备通讯。并且现在很多蓝牙设备都支持4.0,4.0以其低功...

网友评论

  • 991455a71a8a:您好,刚学习蓝牙,蓝牙外设怎么弄啊?demo 没有外设可以连接啊
  • 19f47e36a75e:可以给我发一份demo吗?371381372@qq.com谢谢,最近在学习蓝牙。
    iOS_ZK03:@jerry87 上面有git 地址
  • 漠紫炫:可以页发一份demo吗?谢谢了!549329372@qq.com
  • healthbird:关于蓝牙PIN码,苹果连接蓝牙到底需要PIN码吗?今天硬件同事提供的蓝牙,我使用lightblue连接需要输入PIN码
    iOS_ZK03:@healthbird 苹果提供API只要特征匹配成功,就能建立通信,这个因为没遇到过,不能确切地说不需要,你测试结果了??
    healthbird:@iOS_ZK03 苹果提供的蓝牙API,有PIN这个说法吗,CoreBluetooth中好像没有相应的API啊?
    iOS_ZK03:这个你得测试,得看具体的设备了,我们公司一个蓝牙耳机安卓需要输入PIN,但是苹果并不需要输入这个得专门测试
  • helinyu:https://github.com/helinyu/yuedongCommon/blob/test_bluetooth/s3.jpg
    连接成功之后,怎么蓝牙在设置里面显示这样,和其他的不一样?这个是为什么?遇到过这个问题的朋友解答一下?
  • helinyu:现在我发现我的是可以连接,并且可以读取数据,但是过了一段时间就会自动断开,看了和其他连接的对比一下,发现没有匹配,就是iphone手机上显示已连接,但是右边的感叹号的圈圈没有,应该是还有匹配,这个怎么破?
    iOS_ZK03:@谷寒 做一个重练机制,发现断开链接,重新进行匹配
  • helinyu:发现只是连接,而没有匹配,如何让它匹配?
    iOS_ZK03:@谷寒 就是在那个搜索到设备的地方进行链接,你前面没匹配成功
    helinyu:匹配的链接调用哪个方法,我们在前面不是使用connect的时候就链接了么?
    iOS_ZK03:你链接成功后,读取该设备的信息,会打印出一堆信息,你通过读设备的UUID进行链接就可以了[ps:设备读取,写入uuid是硬件提供的,你可以咨询下你的硬件工程师]
  • dlxfly:可以在未连接之前,拿到外设(智能硬件,非iOS设备)的 mac地址吗?
    iOS_ZK03:@dlxfly 蓝牙搜索时,会拿到附近的设备信息,你打印搜索设备信息就可以
  • 伦敦乡下的小作家:楼主,我项目也涉及到了连接蓝牙,传输和接收数据,是一个枕头,是不是也得需要设备名称、uuid和服务uuid。这四个必不可少吧?
    伦敦乡下的小作家:@iOS_ZK03 好,谢谢
    iOS_ZK03:是,这四个链接蓝牙必备的
  • 夏木友橙:老哥,535235185@qq.com能否发个demo.
    iOS_ZK03:那个云盘链接没失效,你直接去下
  • 24f96b0b6abf:当手机作为外设得时候可以与服务器传递小数据吗。
    iOS_ZK03:@czcgx 已更新Demo地址,希望对你有所帮助

    0df495a7a78c:可以发送一份demo到632507854@qq.com,感谢
    iOS_ZK03:你可以说的清楚点,手机作为外设,你是要以何种方式传递,如果通过网络去传输,这个蓝牙和WIFI并不冲突,
  • d0772cac6afe:我也在做,同求demo xiaoyanghb@gmail.com
    d0772cac6afe:@iOS_ZK03 非常感谢
    iOS_ZK03:已发送
  • e378620d985e:可以给我发一份demo吗?913179451@qq.com谢谢
    iOS_ZK03:已发送
  • 热血足球2016:815130258@qq.com
    iOS_ZK03:已更新Demo地址,希望对你有所帮助
  • d920e665d3d1:你好 大神 ,深夜看到你这个,请问有demo么,我邮箱571014791@qq.com 感激不尽!!!!
  • 程序员LesterXu:楼主你好,请问可以获取到蓝牙列表吗?
    ce0517d4a658:@不值得等 你好, 我公司最近也有意向开发关于蓝牙的项目,能给个Demo吗 907969478@qq.com
    minyue:你好 可以发一分demo吗?最近也在做相关的项目 遇到许多坑 想参照一下 谢谢。641077035@qq.com
  • 好9没见了:假如手机系统中已经跟某个蓝牙设备连接了,我们在调用这个扫描周边的方法,可以扫描到我们已经连接上的这个设备吗?并且可以得到他的信息吗
    iOS_ZK03:@岁月静好依然 corebluetooth就是苹果对BLE4.0和他之上整的,
    好9没见了:@iOS_ZK03 corebluetooth框架可不可以用于蓝牙4.1标准的设备啊
    iOS_ZK03:@岁月静好依然 这个是可以,比如蓝牙耳机这种设备,当你第一次链接与其进行配对之后,关闭蓝牙;第二次打开蓝牙时耳机会自动连接成功,你在控制器台打印数据时会发现,蓝牙的代理方法还是会走的,
  • MakeThatChange:我@你的邮箱了,希望梦指点下~
    d0772cac6afe:大兄弟,可否为我发送一份
    iOS_ZK03:@MakeThatChange 刚来公司,10点左右发你邮箱

本文标题:iOS蓝牙开发---CoreBluetooth[BLE 4.0]

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