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 描述符。

相关推荐
二流小码农32 分钟前
鸿蒙开发:应用内如何做更新
android·ios·harmonyos
初遇你时动了情2 小时前
dart常用语法详解/数组list/map数据/class类详解
数据结构·flutter·list
OldBirds2 小时前
Flutter element 复用:隐藏的风险
flutter
爱意随风起风止意难平3 小时前
002 flutter基础 初始文件讲解(1)
学习·flutter
龙之吻5 小时前
iOS 使用CocoaPods 添加Alamofire 提示错误的问题
ios·xcode·cocoapods
OldBirds6 小时前
理解 Flutter Element 复用
flutter
xq95276 小时前
flutter 带你玩转flutter读取本地json并展示UI
flutter
键盘敲没电10 小时前
【iOS】方法交换
学习·macos·ios·objective-c·cocoa
hepherd10 小时前
Flutter - 原生交互 - 相机Camera - 01
flutter·ios·dart
ailinghao12 小时前
单例模式的类和静态方法的类的区别和使用场景
flutter·单例模式