iOS 实现蓝牙设备重连的四种方式

文章目录

          • 一、通过identifiers的方式实现重连
          • 二、通过UUID的方式实现重连
          • 三、通过scan的方式实现重连
          • 四、通过didDisconnect后回连实现重连

一、通过identifiers的方式实现重连
/*!*  @method retrievePeripheralsWithIdentifiers:**  @param identifiers    A list of <code>NSUUID</code> objects.**  @discussion            Attempts to retrieve the <code>CBPeripheral</code> object(s) with the corresponding <i>identifiers</i>.**    @return                A list of <code>CBPeripheral</code> objects.**/
- (NSArray<CBPeripheral *> *)retrievePeripheralsWithIdentifiers:(NSArray<NSUUID *> *)identifiers NS_AVAILABLE(10_9, 7_0);

使用retrievePeripheralsWithIdentifiers接口。参数为之前连接过的CBPeripheral.identifier。我们可以在接口列表中找到目标设备,并发起连接。

二、通过UUID的方式实现重连
/*!*  @method retrieveConnectedPeripheralsWithServices**  @discussion Retrieves all peripherals that are connected to the system and implement any of the services listed in <i>serviceUUIDs</i>.*				Note that this set can include peripherals which were connected by other applications, which will need to be connected locally*				via {@link connectPeripheral:options:} before they can be used.**	@return		A list of <code>CBPeripheral</code> objects.**/
- (NSArray<CBPeripheral *> *)retrieveConnectedPeripheralsWithServices:(NSArray<CBUUID *> *)serviceUUIDs NS_AVAILABLE(10_9, 7_0);

通过retrieveConnectedPeripheralsWithServices的方式,可以获取到所有当前所有已经连接的设备,可以是其他应用连接的。然后通过CBUUID去过滤出想要的设备。

三、通过scan的方式实现重连
/*!*  @method scanForPeripheralsWithServices:options:**  @param serviceUUIDs A list of <code>CBUUID</code> objects representing the service(s) to scan for.*  @param options      An optional dictionary specifying options for the scan.**  @discussion         Starts scanning for peripherals that are advertising any of the services listed in <i>serviceUUIDs</i>. Although strongly discouraged,*                      if <i>serviceUUIDs</i> is <i>nil</i> all discovered peripherals will be returned. If the central is already scanning with different*                      <i>serviceUUIDs</i> or <i>options</i>, the provided parameters will replace them.*                      Applications that have specified the <code>bluetooth-central</code> background mode are allowed to scan while backgrounded, with two*                      caveats: the scan must specify one or more service types in <i>serviceUUIDs</i>, and the <code>CBCentralManagerScanOptionAllowDuplicatesKey</code>*                      scan option will be ignored.**  @see                centralManager:didDiscoverPeripheral:advertisementData:RSSI:*  @seealso            CBCentralManagerScanOptionAllowDuplicatesKey*	@seealso			CBCentralManagerScanOptionSolicitedServiceUUIDsKey**/
- (void)scanForPeripheralsWithServices:(nullable NSArray<CBUUID *> *)serviceUUIDs options:(nullable NSDictionary<NSString *, id> *)options;

这种方式就比较简单了,扫描广播,通过广播筛选自己的目标设备。这个方式是可以做后台重连接的。

四、通过didDisconnect后回连实现重连
/*!*  @method centralManager:didDisconnectPeripheral:error:**  @param central      The central manager providing this information.*  @param peripheral   The <code>CBPeripheral</code> that has disconnected.*  @param error        If an error occurred, the cause of the failure.**  @discussion         This method is invoked upon the disconnection of a peripheral that was connected by {@link connectPeripheral:options:}. If the disconnection*                      was not initiated by {@link cancelPeripheralConnection}, the cause will be detailed in the <i>error</i> parameter. Once this method has been*                      called, no more methods will be invoked on <i>peripheral</i>'s <code>CBPeripheralDelegate</code>.**/
- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(nullable NSError *)error;

系统回调设备断开连接后,然后在发起重新连接,但是这里有一个注意事项,回连可以延迟执行。为什么要做延迟,我的理解是等待蓝牙做一些初始化动作。具体的原因有知道的小伙伴可以帮忙解答下。谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java项目使用jsch下载ftp文件

pom <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version> </dependency>demo1&#xff1a;main方法直接下载 package com.example.controller;import com.jcraft.jsch.*; im…

【mysql】数据报错: incorrect datetime value ‘0000-00-00 00:00:00‘ for column

一、问题原因 时间字段在导入值0000-00-00 00:00:00或者添加 NOT NULL的时间字段时&#xff0c;会往mysql添加0值&#xff0c;此时可能出现此报错。 这是因为当前的MySQL不支持datetime为0&#xff0c;在MySQL5.7版本以上&#xff0c;默认设置sql_mode模式包含NO_ZERO_DATE, N…

基于UrBAN数据集:用声音监测和预测蜜蜂群体的健康状况

蜜蜂在生态平衡中扮演着关键角色&#xff0c;是农业作物和自然生态系统中的重要传粉者。它们不仅生产蜂蜜和蜂蜡&#xff0c;还对许多水果和种子作物产生影响&#xff0c;包括杏仁、柑橘类水果和蓝莓等。蜜蜂群体的健康状况和数量的下降可能对农业产业产生重大影响。全球范围内…

Python爬取城市空气质量数据

Python爬取城市空气质量数据 一、思路分析1、寻找数据接口2、发送请求3、解析数据4、保存数据二、完整代码一、思路分析 目标数据所在的网站是天气后报网站,网址为:www.tianqihoubao.com,需要采集武汉市近十年每天的空气质量数据。先看一下爬取后的数据情况: 1、寻找数据…

2024全国高考作文题解读(文心一言 4.0版本)

新课标I卷 阅读下面的材料&#xff0c;根据要求写作。&#xff08;60分&#xff09; 随着互联网的普及、人工智能的应用&#xff0c;越来越多的问题能很快得到答案。那么&#xff0c;我们的问题是否会越来越少&#xff1f; 以上材料引发了你怎样的联想和思考&#xff1f;请写…

大模型基础——从零实现一个Transformer(1)

一、Transformer模型架构图 主要模块&#xff1a; embedding层&#xff1a; Input/Output Embedding&#xff1a; 将每个标记(token)转换为对应的向量表示。 Positional Encoding&#xff1a;由于没有时序信息&#xff0c;需要额外加入位置编码。 N个 block堆叠: Multi-Head …

【QT5】<总览四> QT常见绘图、图表及动画

文章目录 前言 一、QFile类读写文件 二、QPainter绘简单图形 三、QChart图表 四、QPropertyAnimation属性动画 五、Q_PROPERTY宏简介 六、自定义属性动画 前言 承接【QT5】&#xff1c;总览三&#xff1e; QT常用控件。若存在版权问题&#xff0c;请联系作者删除&#…

Debezium系列之:记录一次debezium采集tdsql-c数据库数据丢失原因的排查

Debezium系列之:记录一次debezium采集tdsql-c数据库数据丢失原因的排查 一、背景二、排查数据丢失时间段数据采集情况三、捕获提交异常信息四、定位原因五、解决方案一、背景 debezium采集tdsql-c数据库,偶尔会出现数据丢失的情况,出现多次后决定整个链路排查定位问题二、排…

UE5 Mod Support 思路——纯蓝图

原创作者&#xff1a;Chatouille 核心功能 “Get Blueprint Assets”节点&#xff0c;用于加载未来的mod。用基础类BP_Base扩展即可。打包成补丁&#xff0c;放到Content\Paks目录下&#xff0c;即可让游戏访问到内容。 与文中所写不同的地方 5.1或者5.2开始&#xff0c;打…

uniapp封装picker选择器组件,支持关键字查询

CommonPicker.vue组件 路径在 components\CommonPicker.vue <template><view><uni-easyinput v-model"searchQuery" :placeholder"placeholder" /><picker :range"filteredOptions" :range-key"text" v-model&…

【Kubernetes】k8s中,Deployment、Service(svc)和 Pod 之间的关系

在Kubernetes&#xff08;k8s&#xff09;中&#xff0c;Deployment、Service&#xff08;svc&#xff09;和Pod之间的关系是构建、管理和访问容器化应用程序的核心组件。以下是它们之间的关系&#xff0c;以分点表示和归纳的方式描述&#xff1a; Pod&#xff1a; Pod是Kuber…

从零开始:疾控中心实验室装修攻略,让你的实验室一步到位!

在当今充满挑战和变化的世界中&#xff0c;疾病的控制和预防成为了人类生存与发展的重要课题。而疾控中心作为防控疾病的核心机构&#xff0c;其疾控中心实验室设计建设显得尤为重要。下面广州实验室装修公司小编将分享疾控中心实验室设计建设方案&#xff0c;为疾病防控工作提…

如何复制文件描述符

在Linux系统编程中&#xff0c;复制文件描述符是一个常见的操作&#xff0c;通常使用dup或dup2函数来实现。 复制文件描述符的主要原理是创建一个新的文件描述符&#xff0c;该描述符与原始描述符共享相同的文件表项。这意味着它们引用同一个打开的文件&#xff0c;可以进行相…

玩转STM32-通信协议SPI(详细-慢工出细活)

文章目录 一、SPI的基础知识1.1 接口定义1.2 单机和多机通信 二、STM32的SPI工作过程2.1 从选择&#xff08;NSS&#xff09;脚管理2.2 时钟相位与极性2.3 SPI主模式2.4 SPI从模式 三、应用实例 一、SPI的基础知识 1.1 接口定义 SPI系统可直接与各个厂家生产的多种标准外围器…

Python | 开房门(map)

常把map称之为映射&#xff0c;就是将一个元素&#xff08;通常称之为key键&#xff09;与一个相对应的值&#xff08;通常称之为value&#xff09;关联起来 通常用**字典dict**实现了映射这种数据结构 字典也是使用{}来包裹&#xff08;set也是{}&#xff09;&#xff0c;每…

ChatGPT-4o独家揭秘:全国一卷高考语文作文如何轻松斩获满分?

​一、2024年全国一卷高考 二、2018年全国一卷高考 三、2016年全国一卷高考 一、2024年全国一卷高考 技术进步的悖论&#xff1a;我们的问题真的在减少吗&#xff1f; 引言 随着互联网的普及和人工智能的应用&#xff0c;越来越多的问题能够快速得到解答。然而&#xff0c;这引…

网络空间安全数学基础·同余式

6.1 剩余系&#xff08;掌握&#xff09; 6.2 同余式概念与一次同余式&#xff08;熟练&#xff09; 6.3 中国剩余定理&#xff08;熟练&#xff09; 6.1 剩余系 设m是正整数&#xff0c;模m同余的全体整数是一个模m剩余类&#xff0c;即可表示为a qmr&#xff0c; 0≤r<…

idea使用和了解

官网&#xff1a;IntelliJ IDEA – the Leading Java and Kotlin IDE

【MyBatisPlus条件构造器】

文章目录 什么是条件构造器&#xff1f;使用步骤1. 引入 MyBatisPlus 依赖2. 创建实体类3. 使用条件构造器查询4. 执行查询 示例代码 什么是条件构造器&#xff1f; 条件构造器是 MyBatisPlus 提供的一种灵活的查询条件设置方式&#xff0c;它可以帮助开发者构建复杂的查询条件…

持续总结中!2024年面试必问 20 道分布式、微服务面试题(二)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道分布式、微服务面试题&#xff08;一&#xff09;-CSDN博客 三、CAP定理是什么&#xff1f; CAP定理是分布式系统理论中的一个基本概念&#xff0c;由计算机科学家Eric Brewer在2000年提出&#xff0c;并由…