iBeacon& XCode - 使用CoreLocation发现并与CoreBluetooth连接

时间:2014-04-07 10:33:57

标签: core-location bluetooth-lowenergy core-bluetooth ibeacon discovery

我有一个与iOS设备通信的BLE模块。

我想使用iBeacon(所以使用iBeacon广告包)和 - 显然 - 使用CoreBluetooth进行连接(和数据交换),但是存在一些问题。

在描述问题之前,我必须告诉您,我需要在发现阶段提供这些信息:

  1. 序列号(内部需要) - 6个字符和10个 数字。

  2. A" hw版本"指定它是什么类型的产品(每个产品 使用不同的协议)。

  3. 我遇到的问题基本上是如何执行发现阶段,然后连接到特定的已发现对象:

    一个。在iBeacon adv数据包中,我应该使用UUID字段进行串行     hw版本的数字和主要/次要字段,但如果我这样做,那么     设备将基本上无法被发现(iBeacon SDK for iOS     在开始监控之前需要知道要查找的UUID     阶段,所以每个设备都不能有所不同。

    B中。在iOS中,iBeacon功能可通过CoreLocation库获得,     而标准的BLE功能则可通过CoreBluetooth获得。     如果我使用iBeacon广告包,则发现的对象     CoreBluetooth库没有看到包的任何信息     (所以,问题是:"我怎么知道哪个是串行对象     XYZ"。)

2 个答案:

答案 0 :(得分:2)

我意识到我的问题的一个可能的解决方案是以循环方式和#34;广告iBeacon和标准BLE包。让我们说吧。

我试了一下(我宣传了500毫秒的iBeacon封装和500毫秒的标准BLE封装)和标准BLE似乎没问题。

我仍然需要更多地了解iBeacon发现如何对此做出反应,但正如所说它可能是一个解决方案。

答案 1 :(得分:0)

选项1:如果您想使用iBeacon广告,请忘记直接在ProximityUUID中编码任何信息。正如您所提到的,您需要在iOS中预先了解这一点。而是创建一个查找表,将iBeacon标识符转换为硬件编号/序列号。像这样:

Proximity UUID                       Major Minor  HW/N  S/N
2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 10001 10001  0001  abcdef0000000001
2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 10001 10002  0001  abcdef0000000002

此系统可让您为单个UUID提供65536 * 65536个不同的序列号。您需要将此表存储在服务器端并具有Web服务,以根据UUID / Major / Minor查找硬件编号和序列号。

我的公司在http://www.proximitykit.com提供云服务,让您可以做到这一点。您甚至可以使用我们的Web服务API以编程方式将项添加到查找表中。 (它可能很大。)

选项2:由于在建立连接后需要CoreBluetooth,因此您可能会考虑使用CoreBluetooth。您的广告对于所有硬件类型都是相同的,但在连接后,从设备到iOS的第一个数据传输将包含硬件编号和序列号。然后,您可以根据硬件编号根据需要调整通信。