Flutter开发IOS蓝牙APP的大坑

Core Bluetooth 框架限制:iOS 的 Core Bluetooth 框架存在限制,如果指定的特征配置同时允许通知(Notifications)和指示(Indications),调用相关方法设置通知值时,默认仅会开启通知功能,而不会开启指示功能。这意味着即使蓝牙服务通过 Indications 发送数据,由于 iOS 端没有正确开启对 Indications 的支持,导致无法接收。

也就是说,如果你的项目是要连接一个蓝牙设备,并且你需要使用的蓝牙特征同时支持:通知(Notifications)和指示(Indications)时就会出问题。

目前我测试情况如下:

1、特征只有Notifications,ios可以接收数据

2、特征只有Indications,ios可以接收数据

3、特征同时支持 Notifications 和 Indications,并通过Indications发送数据,无法接收数据

4、iOS 的 Core Bluetooth 框架存在限制,如果指定的特征配置同时允许通知(Notifications)和指示(Indications),调用相关方法设置通知值时,默认仅会开启通知功能。 尝试强制启用Indications,官方框架限制不提供设置的接口

复制代码
官方设置订阅Notifications 和 Indications统一使用characteristic.setNotifyValue(true);
不提供指定其中一种的单独订阅方法

5、尝试强制将特征属性设置为仅有Indications,官方框架限制并报错

CoreBluetooth 框架不允许直接修改客户端特征配置描述符(CCCD,UUID 0x2902)的值​ ​。iOS 强制要求必须使用 setNotifyValue(_:for:) 方法来管理特征的通知/指示订阅,而不能直接操作 CCCD 描述符。

相关推荐
2501_9159214314 小时前
iOS开发环境搭建详解 Xcode 配置与快蝎轻量级工具选择
ide·vscode·macos·ios·个人开发·xcode·敏捷流程
_瑞15 小时前
试图教会你用 Xcode Instruments
前端·ios·xcode
恋猫de小郭1 天前
Android R8 为什么可以让 Kotlin 协程提速 2 倍?
android·前端·flutter
2501_915909061 天前
iOS应用性能监控 Instruments工具与崩溃日志分析完整指南
android·ios·小程序·https·uni-app·iphone·webview
杉氧1 天前
弹性滚动的奥秘:在 Flutter 中使用 CustomScrollView 与 Sliver 打造极致流畅列表
android·前端·flutter
张风捷特烈1 天前
Flutter UI 解耦 - 天下大势,合久必分, 分久必合
android·前端·flutter
Patrick_Wilson1 天前
从 React 到 Flutter:写给前端的一张跨端知识地图
前端·flutter·react.js
奎叔2 天前
Flutter 分层架构:从页面堆叠到可演进的业务边界
flutter
iOS开发上架哦2 天前
Android代码混淆与iOS加固技术详解
后端·ios
奎叔2 天前
Flutter 客户端 Trace 与稳定性治理:从链路追踪到灰度、降级和复盘
flutter