iOS 15.7.3下Swift BLE后台扫描didDiscover不触发问题求助
iOS 15.7.3 Swift应用BLE后台扫描无响应问题求助
问题描述
在iOS 15.7.3设备上开发Swift应用时,遇到BLE后台扫描问题:应用需在后台发现BLE设备,但didDiscover方法未被触发。
已完成的排查与配置
- 已配置蓝牙使用及后台处理权限
- 项目后台处理标识设置正确
- BLE设备已配置为可后台广播
- 测试环境无物理障碍或干扰
额外测试细节
- 在
applicationDidEnterBackground方法中启动后台扫描 - 测试初始时BLE设备不在范围内,应用后台约5分钟后将其靠近iPhone,等待15-20分钟仍无响应
- 若BLE设备不远离,应用后台后会立即检测到但仅一次
- 测试期间手机屏幕未锁定
CBCentralManager已使用CBCentralManagerOptionRestoreIdentifierKey选项- iOS 16.3.1的iPhone 12 mini上后台扫描可工作,但每次调用
scanForPeripherals仅发现设备一次 - 使用的过滤条件:
CBUUID(string: "330C5AD1-7261-4F06-B87C-0F6342365C2E")和CBUUID(string: "4c6607e0-2c3d-4fca-b201-0246773d6e9c") - 测试时进入iPhone蓝牙设置(设备搜索页),
didDiscover方法开始上报发现的设备
BLE广播数据
7 elements 0 : 2 elements key : "kCBAdvDataServiceUUIDs" value : 1 element 0 : 4C6607E0-2C3D-4FCA-B201-0246773D6E9C 1 : 2 elements key : "kCBAdvDataRxSecondaryPHY" value : 0 2 : 2 elements key : "kCBAdvDataTimestamp" value : 719149435.0168051 3 : 2 elements key : "kCBAdvDataLocalName" value : GB3_0CCE 4 : 2 elements key : "kCBAdvDataRxPrimaryPHY" value : 0 5 : 2 elements key : "kCBAdvDataServiceData" value : 1 element 0 : 2 elements key : 330C5AD1-7261-4F06-B87C-0F6342365C2E value : <01020304> 6 : 2 elements key : "kCBAdvDataIsConnectable" value : 1
功能场景说明
我们的BLE设备可生成通知,可通过同步连接或广播数据中的标识获取通知;设备生成通知时会广播UUID为330C5AD1-7261-4F06-B87C-0F6342365C2E的服务,实际应用中后台扫描会过滤该UUID。使用流程:
- 用户最小化应用(触发
applicationDidEnterBackground),启动后台扫描 - 若已连接设备,5分钟后断开连接
- 设备生成通知时,通过后台扫描发现设备,提取广播数据中的通知信息,必要时连接设备
目前后台扫描无法发现设备,尝试多种方法均未解决,恳请协助分析原因并提供建议。
内容的提问来源于stack exchange,提问作者Nruzumak Nruzumak
相关产品推荐
相关产品推荐

