我在OSX下面的这个示例项目
BeaconEmitter,以生成在iPhone上开发应用程序的iBeacons样本.
BeaconEmitter应用程序基于 Matthew Robinson的教程,直到苹果决定在OSX的Core Location上引入iBeacon支持,生成iBeacon的唯一机会就是使用IO蓝牙框架从头构建广告包. @H_403_3@但是…不行! @H_403_3@我当然也尝试了苹果在iOS上的AirLocate教程代码,并且在iOS设备之间是可以正常工作的.但是如果您尝试使用OSX(BeaconEmitter)生成iBeacon,并使用无法使用的iOS设备(AirLocate)进行接收. @H_403_3@我有一个基于CC2540 TI芯片的BLE射频嗅探器,并在Windows上使用TI嗅探器软件.所以我看到从AirLocate和BeaconEmitter生成的iBeacons数据包有点不同. @H_403_3@那就是用AirLocate生成的iBeacon: @H_403_3@Thah是由BeaconEmitter生成的ibeacon: @H_403_3@继this post之后的反向工程(因为苹果尚未发布iBeacons规范),可以看到Adv PDU头与两种情况不同.
在OSX中,Type = 2和TxAdd = 0,在iOS中,Type = 0和TxAdd = 1. @H_403_3@为什么这个差异? @H_403_3@以女巫的方式可以强制OSX发送与iOS相同的Adv PDU头? @H_403_3@似乎也在AdvData的前5个字节中,两个数据包不相等: @H_403_3@OSX:02 01 06 1A FF @H_403_3@iOS:02 01 1A 1A FF @H_403_3@其余的AdvData有效负载是根据以上链接的反向工程师. @H_403_3@再次,为什么这个字节是不同的? @H_403_3@我没有发现OSX示例中的代码的哪一部分依赖于. @H_403_3@更新:它的工作 @H_403_3@主要的原因是因为iBoacon从BeaconEmitter生成的AirLocate没有被承认是我的错.我不明白AirLocate不是每个UUID值过滤UUID的一些具体例子,即:E2C56DB5-DFFB-48D2-B060-D0F5A71096E0或5A4BCFCE-174E-4BAC-A814-092E77F6B7E5或74278BDA-B644-4520-8F0C-720EAF059935. @H_403_3@所以从BeaconEmitter生成的随机UUID肯定不符合AirLocate中预写的UUID. @H_403_3@如果您可以从BeaconEmitter“强制”UUID具有良好的价值,AirLocate可以识别它: @H_403_3@所以这是iOS AirLocate示例应用程序的成功测试: @H_403_3@保持上述相同字节的差异,只有嗅探器才能看到:).
BeaconEmitter应用程序基于 Matthew Robinson的教程,直到苹果决定在OSX的Core Location上引入iBeacon支持,生成iBeacon的唯一机会就是使用IO蓝牙框架从头构建广告包. @H_403_3@但是…不行! @H_403_3@我当然也尝试了苹果在iOS上的AirLocate教程代码,并且在iOS设备之间是可以正常工作的.但是如果您尝试使用OSX(BeaconEmitter)生成iBeacon,并使用无法使用的iOS设备(AirLocate)进行接收. @H_403_3@我有一个基于CC2540 TI芯片的BLE射频嗅探器,并在Windows上使用TI嗅探器软件.所以我看到从AirLocate和BeaconEmitter生成的iBeacons数据包有点不同. @H_403_3@那就是用AirLocate生成的iBeacon: @H_403_3@Thah是由BeaconEmitter生成的ibeacon: @H_403_3@继this post之后的反向工程(因为苹果尚未发布iBeacons规范),可以看到Adv PDU头与两种情况不同.
在OSX中,Type = 2和TxAdd = 0,在iOS中,Type = 0和TxAdd = 1. @H_403_3@为什么这个差异? @H_403_3@以女巫的方式可以强制OSX发送与iOS相同的Adv PDU头? @H_403_3@似乎也在AdvData的前5个字节中,两个数据包不相等: @H_403_3@OSX:02 01 06 1A FF @H_403_3@iOS:02 01 1A 1A FF @H_403_3@其余的AdvData有效负载是根据以上链接的反向工程师. @H_403_3@再次,为什么这个字节是不同的? @H_403_3@我没有发现OSX示例中的代码的哪一部分依赖于. @H_403_3@更新:它的工作 @H_403_3@主要的原因是因为iBoacon从BeaconEmitter生成的AirLocate没有被承认是我的错.我不明白AirLocate不是每个UUID值过滤UUID的一些具体例子,即:E2C56DB5-DFFB-48D2-B060-D0F5A71096E0或5A4BCFCE-174E-4BAC-A814-092E77F6B7E5或74278BDA-B644-4520-8F0C-720EAF059935. @H_403_3@所以从BeaconEmitter生成的随机UUID肯定不符合AirLocate中预写的UUID. @H_403_3@如果您可以从BeaconEmitter“强制”UUID具有良好的价值,AirLocate可以识别它: @H_403_3@所以这是iOS AirLocate示例应用程序的成功测试: @H_403_3@保持上述相同字节的差异,只有嗅探器才能看到:).