如何在 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 不使用服务数组

如何获取/查找 CoreBluetooth.Framework?

如何在 CoreBluetooth 中测试两个 CBPeripheral 的相等性?