2017-04-09 78 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