在 BLE 开发过程中,我们经常会遇到这样的问题:蓝牙模块可以正常广播 iBeacon,但在最新的 iPhone 17 / iOS 26 上却无法被识别。本文将从广播格式、iOS 26 的新规则,以及常见坑点,带你彻底理解并解决这个问题。
一、问题背景
近期在调试 ESP32 和 Nordic BLE 模块时发现:
- 模块广播正常,在 Android 或旧版 iPhone 上均可识别为 iBeacon。
- 但在 iPhone 17 / iOS 26 上扫描时,该 iBeacon 根本不显示。
- 模块发送的原始广播可以在 nRF Connect 等工具看到,但 iOS 识别不到。
这类问题在 BLE 产品开发中非常常见,尤其是对于企业和 SDK 开发者。
二、iBeacon 广播格式回顾
Apple 官方规定 iBeacon 广播格式如下:
0x02 // Length
0x01 // AD Type: Flags
0x06 // Flags: LE General + BR/EDR Not Supported
0x1A // Length (26 bytes)
0xFF // AD Type: Manufacturer Specific
0x4C 0x00 // Company ID (Apple)
0x02 // iBeacon type
0x15 // iBeacon data length (21 bytes)
[UUID 16 bytes]
[Major 2 bytes]
[Minor 2 bytes]
[TxPower 1 byte]
核心要点
- Flags 必须存在(0x020106)
iOS 通过 Flags 判断是否是可扫描 BLE 广播。 - Company ID 必须是 Apple(0x004C)
- iBeacon type 必须是 0x02
- TxPower 必须存在,1 字节 signed integer。
三、iPhone 17 / iOS 26 新规则
iOS 26 对 iBeacon 的识别规则更严格:
-
Flags 字段必不可少
- 缺失 0x020106 的广播会被忽略。
-
Manufacturer Data 必须紧随 Flags
- 广播包长度、字节顺序要规范。
-
禁止省略 TxPower
- iOS 26 严格要求最后 1 字节存在。
-
不能同时广播多个 Manufacturer Data
- 如果有额外厂商数据,iOS 26 会忽略 Apple iBeacon 信息。
四、常见错误示例
1. 缺少 Flags(0x020106)
错误广播示例:
1AFF 4C 00 02 15 [UUID][Major][Minor][TxPower]
→ 缺少 Flags
→ iPhone 17 不识别为 iBeacon
2. Manufacturer Data 长度错误
一些模块省略了 Length 字节或写错:
FF4C000215 ...
→ iOS 26 忽略该广播
3. Company ID 写错
错误:
0x00 0x4C
字节顺序反了 → iOS 不识别
4. 多厂商 Manufacturer Data
同时广播 Apple + 自家厂商数据 → iOS 26 会过滤掉 Apple iBeacon
五、验证广播包的方法
推荐工具:
- iPhone:LightBlue / nRF Connect
- Mac:PacketLogger
- Android:BLE Scanner
检查点:
- 广播中是否有 0x020106
- Manufacturer Data 是否正确
- UUID、Major、Minor、TxPower 是否符合规范
- 没有其他干扰数据
六、正确的 iBeacon 广播示例
0201061AFF4C000215
E2C56DB5DFFB48D2B060D0F5A71096E0
0001
0001
C5
解释:
020106→ Flags1AFF→ Length + Manufacturer AD Type4C00→ Apple Company ID02→ iBeacon type15→ 数据长度[UUID][Major][Minor]→ iBeacon 核心信息C5→ TxPower
该广播可以在 iPhone 17 / iOS 26 上被正确识别。
七、解决方案总结
- 务必加回 0x020106 Flags
- 确保 Manufacturer Data 按规范排列
- Company ID = 0x004C
- TxPower 不能省略
- 避免同时广播多厂商数据
八、实战经验分享
- iOS 对广播规范越来越严格,BLE 开发必须从底层保证格式正确。
- 企业 BLE SDK / 模组开发,建议加上广播校验功能,防止被新 iOS 过滤。
- 在开发过程中,多用 nRF Connect / LightBlue 先调试广播内容,再上 iPhone 测试。
- ESP32 / Nordic / Telink 等模块都有类似坑,必须对照官方 iBeacon 格式严格实现。
九、结语
BLE 广播虽然看似简单,但不同 iOS 版本的差异和严格规则,很容易让开发者踩坑。
理解并遵守 iBeacon 官方格式,确保 Flags、Manufacturer Data 和 TxPower 正确,是解决 iPhone 17 / iOS 26 无法识别问题的关键。
💡 作者简介
我是一名专注 BLE / Wi-Fi 模组开发的工程师,4 年以上 IoT 开发经验。文章旨在分享实战经验与踩坑总结,帮助开发者少走弯路。