私のアプリは Bluetooth LE ペリフェラルとして実行されており、Advertisement で数バイトのカスタム データを送信しようとしています。
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 のデータ セットが取り除かれ、無線で送信されないようです。私は、Apple のドキュメントとオンラインでこれについて見つけることができるすべてのスクラップを読みました。CBAdvertisementDataLocalNameKey と CBAdvertisementDataServiceUUIDsKey のみがサポートされているため、Core Bluetooth はデータを無視するというのがコンセンサスのようです。上記はコンパイルして正常に実行され、BT スキャナー アプリで「これが機能することを願っています」が、カスタム データの 2 ビットが機能していないようです。
これを回避する方法はありますか? CoreBluetooth または私が見逃している完全にばかげたものに受け入れられる代替手段はありますか?
ありがとう、
ダン