[英]iBeacon iOS 10: Can device scan for and receive advertisements from other peripheral devices?
這里是全新的。
Tl; dr:iOS設備可以播發可以被其他iOS設備掃描的CB廣告(CBAdvertisementDataServiceUUIDsKey和/或CBAdvertisementDataLocalNameKey)嗎?
我相信我的問題是基於不贊成使用的內容以及在更高版本的iOS中對CoreBluetooth和CoreLocation的更改而引起的。 另外,就目前而言,我僅指“前景”操作。
根據我的閱讀和測試,外圍設備可以使用CL傳輸信標區域(唯一接近UUID,主要和次要(但特別是沒有“標識符”))。 借助CB,外圍設備還可以“公告”兩個額外的少量數據之一:CBAdvertisementDataServiceUUIDsKey和CBAdvertisementDataLocalNameKey。
我無法實現的是讓設備(例如iPhone)使用CB掃描這些附加密鑰中的任何一個,或者正如我提到的使用CL或CB的可選“標識符”進行掃描。
指定掃描的唯一選項需要CBUUID,但未發現的iOS外圍設備在技術上無法發布該信息:
central.scanForPeripherals(withServices: [CBUUID]?, options: [String : Any]?)
似乎下面的方法可以工作,但advertData似乎不包含上述鍵,即使[String:Any]也是如此:
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any],
rssi RSSI: NSNumber){
//code
}
這里的任何幫助/答案將不勝感激。 謝謝!
不幸的是, iOS在這里毫無幫助。 蘋果通過多種方式鎖定CoreBluetooth。
發送/接收廣告的三種基本方式:
iBeacon顯示
您可以在前台和后台使用CoreLocation掃描iBeacon廣告,並具有快速響應,但是數據字段僅限於ProximityUUID(主要和次要)。
您只能在前台使用CoreBluetooth傳輸iBeacon廣告。
藍牙LE服務廣告
您可以使用CoreBluetooth在前台(但不能在后台)傳輸這些文件,但不能附加任意數據。 但是,您可以發送16字節的任意服務UUID。
您可以在前台和后台使用CoreBluetooth掃描服務廣告,並讀取具有快速前台響應和慢速后台響應的服務UUID。 如果使用16位服務UUID,則還可以從這些廣告中讀取最多18個字節的附件數據。 渦流以這種方式工作。
藍牙LE制造商廣告
除了如上所述的特殊iBeacon廣告,您根本無法在iOS上使用CoreBluetooth來廣告制造商廣告。
您可以使用CoreBluetooth掃描制造商的廣告,並且可以讀取最多23個字節的附件數據。 您根本無法在后台進行檢測,但是前景檢測很快。
底線:如果要將廣告數據從一台iOS設備發送到前台或后台的另一台設備,則只有iBeacon。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.