繁体   English   中英

iBeacon iOS 10:设备可以扫描并从其他外围设备接收广告吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM