AirDrop中BLE角色疑问:作为Central的发送端如何广播ID?
AirDrop BLE角色与流程的修正说明
苹果未公开AirDrop的完整实现细节,但根据现有研究,其BLE阶段的实际角色分配是发送端作为Central,接收端作为Peripheral,这就解决了你提到的“Peripheral无法同时连接多个Central”的矛盾。
发送端(Central)如何传递身份标识供接收端验证
发送端不会以Peripheral身份广播,而是在BLE扫描请求的附加数据段中,携带经过哈希处理的自身身份标识(比如关联的联系人邮箱/电话号码的哈希值)。接收端(Peripheral)会持续发送低功耗的可连接广播包,当收到发送端的扫描请求时,先验证该哈希是否符合自身隐私规则:
- 若接收端设置为「所有人」,直接通过验证
- 若哈希值匹配接收端联系人列表中的某条记录,同样通过验证
修正后的完整BLE+WiFi流程
- 接收端(Peripheral)持续发送带AirDrop服务标识的BLE可连接广播
- 发送端(Central)启动BLE扫描,同时在扫描请求中携带哈希化的身份标识
- 接收端验证扫描请求中的身份标识,符合条件则回复扫描响应,包含自身设备名称
- 发送端收集所有有效回复,在AirDrop界面展示可选接收方
- 用户选定目标后,发送端(Central)主动发起与该接收端(Peripheral)的BLE连接
- 通过BLE连接,发送端向接收端传递点对点WiFi的配置参数(SSID、密钥、信道等)
- 双方建立点对点WiFi连接,开始文件传输
补充:苹果采用哈希化的身份标识,是为了在验证联系人身份的同时,避免明文泄露用户的私人联系方式,兼顾隐私与功能需求。
内容的提问来源于stack exchange,提问作者RobotX
相关产品推荐
相关产品推荐

