我的应用作为一个蓝牙LE外设运行,我试图在广告中发送一些自定义数据,仅仅只有几个字节。
func btStartBroadcasting(peripheral: CBPeripheralManager!) {
// create an array of bytes to send
var byteArray = [UInt8]()
byteArray.append(0b11011110); // 'DE'
byteArray.append(0b10101101); // 'AD'
// convert that array into an NSData object
var manufacturerData = NSData(bytes: byteArray,length: byteArray.count)
// define a UIUD for the service
let theUUid = CBUUID(NSUUID: uuid)
// build the bundle of data
let dataToBeAdvertised:[String: AnyObject!] = [
CBAdvertisementDataLocalNameKey : "I wish this worked",
CBAdvertisementDataManufacturerDataKey : manufacturerData,
CBAdvertisementDataServiceUUIDsKey : [theUUid],
]
peripheral.startAdvertising(dataToBeAdvertised)
}
但看起来CBAdvertisementDataManufacturerDataKey中的数据集被剥离并且不能通过无线电发出。我已经在苹果的文档和在线上阅读了每一点零碎的信息。共识似乎是Core Bluetooth将忽略该数据,因为只支持CBAdvertisementDataLocalNameKey和CBAdvertisementDataServiceUUIDsKey。上述内容编译和运行正常,在我的BT扫描应用程序中可以看到"I wish this worked",但我的两个自定义数据好像不起作用。
有没有任何方法可以规避这个问题?是否有任何可接受的CoreBluetooth替代品或者我忽略了任何愚蠢的事情?
谢谢,
丹