如何在 CoreBluetooth Swift 中获取 kCBAdvDataManufacturerData?
Posted
技术标签:
【中文标题】如何在 CoreBluetooth Swift 中获取 kCBAdvDataManufacturerData?【英文标题】:How do I get a hold of kCBAdvDataManufacturerData in CoreBluetooth Swift? 【发布时间】:2015-10-11 02:20:46 【问题描述】:我有一个 Broadcom BLE 外围设备广播数据,其中包括以制造商数据形式发布的序列号。当我尝试在 ios (Swift) 中获取它时,我无法弄清楚如何将它转换为变量或常量。
我能够执行:
println("\(advertisementData)")
'advertisementData' 内置于 centralManager 函数中。在控制台中我得到:
[kCBAdvDataIsConnectable:0,kCBAdvDataLocalName:芒果,kCBAdvDataManufacturerData:]
这很好,但我需要将 kCBAdvDataManufacturerData 中的数据与字符串进行比较,如果它们相同,则让它执行一个函数。
我将如何创建访问序列号/kCBAdvDataManufacturerData 的变量?我尝试了许多不同的路线。
函数代码:
func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!)
let localData = advertisementData as NSDictionary
println(localData.objectForKey(CBAdvertisementDataLocalNameKey))
var localName: NSString!
if (localData.objectForKey(CBAdvertisementDataLocalNameKey) == nil)
localName = ""
else
localName = localData.objectForKey(CBAdvertisementDataLocalNameKey) as! NSString
if (localName == "test")
println("Test Found!")
println("\(advertisementData)")
self.tLog(NSString(format: "Discovered %@, RSSI: %@\n", localName, RSSI))
self.discoveredPeripheral = peripheral
if (self.verboseMode())
self.centralManager.connectPeripheral(peripheral, options: nil)
【问题讨论】:
【参考方案1】:确认。想通了:
println(advertisementData["kCBAdvDataManufacturerData"] as! NSData)
【讨论】:
您是否尝试将其转换为整数数组以上是关于如何在 CoreBluetooth Swift 中获取 kCBAdvDataManufacturerData?的主要内容,如果未能解决你的问题,请参考以下文章
而委托为 nil 或未实现外围设备:didDiscoverCharacteristicsForService:error: (Corebluetooth, Swift)
iOS Swift - CoreBluetooth 无法发送数据
有没有办法可以在 Swift 中使用 Core Bluetooth 更改另一部 iPhone 上的视图控制器?
CoreBluetooth:scanForPeripheralsWithServices 不使用服务数组