2017-04-09 45 views
1

我可以扫描与iBeacons:连接到iBeacon显示

func locationManager(manager: CLLocationManager!, didRangeBeacons beacons: [AnyObject]!, inRegion region: CLBeaconRegion!) { 

    } 
} 

让想我得到下面的信标扫描

Beacon 1: major:1 minor:5 uuid:xxx 
Beacon 2: major:1 minor:6 uuid:xxx 
Beacon 3: major:1 minor:7 uuid:xxx 

扫描我想连接到信标2,改变其特性后后。

我知道我可以使用CoreBluetooth扫描并连接到蓝牙设备并更改其特性,但问题是如何通过Core Bluetooth识别哪个设备是beacon 2?

回答

1

您无法获得任何将CLBeaconCBPeripheral直接相关的信息。

通常,信标的GATT服务将公开一个“设备名称”特征,您可以向用户显示该特征,以允许他们从列表中选择要配置的设备。

正如David在评论中指出的那样,任何这样的GATT服务都将是供应商特定的,或者甚至可能根本不存在,并且通过其他方法(例如USB)配置信标。即使在提供GATT服务的情况下,也可以通过配置禁用GATT服务,或者仅在首次开机后的有限时间内激活。

没有定义通用的“配置iBeacon”服务。

+1

要添加到Paul的答案,并非所有的信标都有可连接的GATT服务。一些制造商确实提供了这种配置,但不能使用CoreLocation API。您必须使用CoreBluetooth API。而你如何这样做的细节都是特定于供应商的。询问您的信标制造商是否有公共配置GATT服务的文档。您无法将信标检测与CoreBluetooth设备相关联。苹果不幸阻止了这一点 – davidgyoung

+0

我得到的是没有办法将CLBeacon与CBPeripheral联系起来,为了将两者都连接起来,我需要连接所有信标并逐个检查,然后确定正确的信标,因为我使用的信标也暴露了它的主要/次要/通过盖特的uuid。但是如果我有更多的信标像20+ – H4SN

+0

这种方法是没有用的,正如大卫说的那样,这取决于你的灯塔;有些可能会通过他们的GATT服务公开一个有用的名字。没有配置信标的标准方式 – Paulw11