1

CBPeripheralManager文档中,startAdvertising方法接收包含您要宣传的数据的字典。根据文档, CBPeripheralManager.startAdvertising 在其字典参数中仅接受两个可能的键:CBAdvertisementDataLocalNameKeyCBAdvertisementDataServiceUUIDsKey

但是,在 Apple 的Turning an iOS Device into an iBeacon文档中,他们建议您能够传递从CLBeaconRegionperipheralData方法返回的字典。从该方法返回的字典包含 1 个键值对,键名为“ kCBAdvDataAppleBeaconKey ”,值是proximityUUID、major、minor 和beacon 标识符。

此处显示从 peripheralData 方法返回的字典转储: 字典转储

我的问题是:如果 PeripheralManager.startAdvertisement 方法仅支持CBAdvertisementDataLocalNameKeyCBAdvertisementDataServiceUUIDsKey ,它如何接收带有键“ kCBAdvDataAppleBeaconKey ”的字典并且仍然无错误地广播?

4

1 回答 1

0

最简单和最可能的解释是关于 CBPeripheralManager.startAdvertising 只接受两个键的文档是不准确的。在 iBeacon 支持发布后,文档可能根本就没有更新过。

在相关说明中,我怀疑(但无法确认)该方法支持更多密钥作为私有API。您必须反编译框架二进制文件才能弄清楚这些是什么。

现实情况是,文档与添加到 API 的新功能不同步是很常见的,更常见的是文档更不用说不公开支持的秘密行为。

于 2018-11-30T23:52:36.307 回答