iOS开发 - 蓝牙学习的总结

简介: iOS开发 - 蓝牙学习的总结

前言:


蓝牙我们知道在外设方面用的比较多,况且目前在医疗运动等方便使用也比较广泛,博主个人对于外设这一块其实挺看重的,未来必定是可穿戴设备的天下,在达不到完全把功能集成到穿戴设备的技术和降低成本的条件下,外设是一个很好的选择,蓝牙无疑起到决定性的作用。


最近在看蓝牙,关于蓝牙,也许你很了解这个名词,但是你并不知道它的原理,先推荐几篇大神写的博客,初步了解下:

http://www.cocoachina.com/ios/20150915/13454.html

http://www.cocoachina.com/ios/20150917/13456.html


里面也有原作者的代码下载,整理来说写的很详细,基本功能都实现的很好,我们所需要做的就是根据自己的需求简单修改代码就好。


蓝牙有两种情况:中心设备(central)和外设(peripheral)


从其字面理解,中心设备就是用来接收并处理外设发送数据的端,外设自然就是发射消息端,这是在相对层面来说,中心也可以向外设发送数据,不过一般都是发送指令来控制外设,这一点理解就好。


在开发蓝牙之前首先你要了解蓝牙开发的一点限制,如果仅最低支持蓝牙4.0,那么OK,但是要支持2.0,如果你是安卓方面或者iOS越狱手机,无关紧要,但要是想上线到App Store的话,需要硬件厂商有MFI的授权(make for ipad ,iphone, itouch 专们为苹果设备制作的设备),这个对生产厂商有一定要求,需要有一定规模,且为国际企业提供硬件,要求比较高,所以一般都是放弃的。博主比较推崇的是蓝牙4.0 BLE - 开发使用CoreBluetooth 框架,因低功耗而受推崇。


中心设备(central)


将我们的手机作为中心设备,来接收外设发送的数据,如手环。这种情况是最简单也最好处理的,不需要设置UUID和一些蓝牙的参数。需要处理的就是扫描设备->发现设备->连接设备->接收广播->处理服务和特征->展示服务和特征。


在此可能还会有设备断开重连,自动连接,绑定设备的一些操作:


断开重连:连接后可获取到设备的UUID并保存,在断开代理中检测到断开后,查找搜索到的设备的UUID是否和保存的UUID一致,若一致则连接;


自动连接:第一次连接保留了外接设备的UUID,再次打开蓝牙一旦检测到外接设备的UUID和保存的一致则自动连接;


绑定设备:设备都会有唯一Mac地址,一般很少会写进外接设备中,绑定设备在外接设备中也不多见,我们所见到的也不过是断开重连和自动连接的结合使用,好像绑定了一样,这两个功能足以满足用户需要,如果需要绑定则需要外接设备提供Mac地址,因为设备UUID并不是唯一的,这种情况发生在我们使用另外一台设备来连接外接设备,只有在同一台设备上,外设的UUID是不变的。


外设(peripheral)


外设就像是一个广播,工作时无时无刻不在向外广播着,广播的内容我们叫做服务,每一个服务可以有多个特征,在代理中,设备建立连接后可以拿到服务和特征的值。


总结


以上是手机作为中心设备来扫描外设的原理和思路,代码部分请参考上面博客给出的,博主这里提供个Demo,非博主原创Demo,也算给作者正名了,下载地址,如果需要手机来做外设,请参考Demo中给出的实例,不再说明。

目录
相关文章
|
18小时前
|
Swift iOS开发 开发者
探索iOS开发中的SwiftUI框架
在苹果的生态系统中,SwiftUI代表了iOS应用开发的一次重大飞跃。作为一项现代化的UI工具集,它旨在简化和加速界面设计过程,同时确保代码的清晰度与可维护性。本文将深入探讨SwiftUI的核心概念、优势以及在实际开发中的应用案例,为开发者提供全面而实用的指南。
|
1天前
|
安全 IDE Android开发
探索Android与iOS开发的差异:平台特性与编程实践
【6月更文挑战第17天】在移动应用开发的广阔天地中,Android和iOS两大平台各自占据半壁江山。它们在用户群体、系统架构以及开发环境上的差异,为开发者带来了不同的挑战和机遇。本文深入探讨了这两个平台在技术实现、界面设计、性能优化等方面的主要区别,并提供了实用的开发建议,旨在帮助开发者更好地理解各自平台的特性,从而创造出更加优秀的移动应用。
|
4天前
|
安全 Android开发 iOS开发
探索Android与iOS开发的差异:平台特性与用户体验的对比分析
在移动应用开发的广阔天地中,Android和iOS两大阵营各据一方。本文将深入探讨这两个操作系统在开发环境、编程语言、用户界面设计及市场分布等方面的主要区别。通过比较分析,我们将揭示各自平台的特有优势,并讨论如何根据目标受众和业务需求选择适合的开发平台。
|
4天前
|
iOS开发 开发者
探索iOS开发中的SwiftUI框架
【6月更文挑战第14天】本文将深入探讨iOS开发领域的新星——SwiftUI框架。我们将从其设计理念出发,逐步解析其结构与核心组件,并通过实例展示如何利用SwiftUI简化界面构建流程,提升开发效率。同时,我们也将讨论SwiftUI在现有项目中的集成策略及其对iOS应用开发未来的可能影响。
15 1
|
5天前
|
安全 Java Android开发
探索Android与iOS开发的差异与挑战
在移动应用开发的广阔天地里,Android和iOS两大平台各自占据半壁江山。本文将深入探讨这两个平台的开发环境、工具、语言以及设计理念的差异,并分析这些差异给开发者带来的挑战。我们将从多个角度出发,包括用户界面设计、性能优化、安全性考量、以及市场分布等方面,为读者提供一个全面的视角,以理解在这两个平台上进行开发时需要考虑的关键因素。
|
5天前
|
Swift iOS开发 开发者
探索iOS开发中的SwiftUI框架
【6月更文挑战第13天】本文将深入探讨iOS开发中的一个重要工具——SwiftUI框架。我们将了解其基本概念,如何在实际项目中应用,以及它为开发者带来的优势和挑战。
11 1
|
7天前
|
iOS开发 开发者 UED
探索iOS开发中的SwiftUI框架
在移动应用开发的广阔天地中,苹果公司的SwiftUI框架以其声明式语法和直观布局管理,为iOS开发者带来了新的生产力工具。本文将深入探讨SwiftUI的设计哲学、核心概念以及在实际项目中如何高效运用该框架,旨在为读者提供一份全面的SwiftUI使用指南。
|
7天前
|
API Swift iOS开发
探索iOS开发中的SwiftUI框架
【6月更文挑战第11天】本文将深入探讨iOS开发中的一个重要工具——SwiftUI框架。我们将了解其基本概念,如何在实际项目中应用,以及它如何改变iOS应用的开发方式。
|
8天前
|
编解码 安全 Android开发
探索iOS与Android开发的差异:从界面到性能
【6月更文挑战第10天】在移动应用开发的广阔天地中,iOS和Android两大平台各占山头,它们在设计理念、用户体验、性能优化等方面展现出独特的魅力。本文将深入探讨这两大系统在开发过程中的主要差异,从用户界面设计到性能调优,揭示各自背后的技术逻辑与创新策略,为开发者提供全面的视角和实用的开发指南。
|
9天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异性
【6月更文挑战第9天】本文深入探讨了安卓和iOS这两大主流移动操作系统在应用程序开发方面的关键差异。从编程语言、用户界面设计到市场策略,我们将逐一分析这些差异如何影响开发者的选择和最终产品的用户体验。通过比较,我们旨在为开发者提供一份实用的指南,帮助他们在这两个平台上做出更明智的开发决策。