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

相关推荐
Digitally34 分钟前
比较 iPhone:全面比较 iPhone 17 系列
android·ios·iphone
林间风雨1 小时前
flutter项目 -- 换logo、名称 、签名、打包
flutter
2501_915909065 小时前
HTTPS 错误解析,常见 HTTPS 抓包失败、443 端口错误与 iOS 抓包调试全攻略
android·网络协议·ios·小程序·https·uni-app·iphone
SoaringHeart11 小时前
Flutter组件封装:页面点击事件拦截
前端·flutter
tangweiguo0305198715 小时前
Flutter与原生混合开发:实现完美的暗夜模式同步方案
android·flutter
他们都不看好你,偏偏你最不争气17 小时前
【iOS】UIViewController
开发语言·macos·ios·objective-c·cocoa
程序员老刘17 小时前
CTO紧急叫停AI编程!不是技术倒退,而是...
flutter·ai编程
leazer19 小时前
Flutter TabBar 字体缩放动画抖动问题及优化方案
flutter
前端小超超21 小时前
如何配置capacitor 打包的ios app固定竖屏展示?
前端·ios·web app
CocoaKier21 小时前
AI让35岁程序员再次伟大
ios·微信小程序·aigc