2

내 앱이 블루투스 LE 주변 기기로 실행 중이고 광고에 맞춤 데이터 몇 개만 보내려고합니다. CBAdvertisementDataManufacturerDataKey에서 데이터 세트가 밖으로 제거와 라디오를 통해 내 보내지 않습니다되고처럼iOS의 광고에서 블루투스 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) 

} 

는하지만 보인다. 나는 Apple의 설명서와 온라인에서이 모든 것을 발견 할 수있는 작은 조각들을 읽었습니다. CBAdvertisementDataLocalNameKey 및 CBAdvertisementDataServiceUUIDsKey 만 지원되므로 코어 블루투스는 데이터를 무시합니다. 위의 컴파일 및 실행 잘, 내 BT 스캐너 응용 프로그램에서 "나는이 일을"좋겠지 만, 내 두 비트의 사용자 지정 데이터가 작동하지 않는 것처럼 보입니다.

이 문제를 피하는 방법이 있습니까? CoreBluetooth 또는 내가 모르는 완전히 바보 같은 것에 대한 수용 가능한 대안?

감사합니다,

+0

iBeacon 형식의 광고를 보낼 수 있습니까? 주/부 필드에서 4 바이트의 데이터를 얻습니다. –

+0

iOS 8에서 변경된 사항이 없으면 제조업체 데이터를 수정할 수 없습니다. http://stackoverflow.com/a/23790973/2128900 –

답변

1

문제는 너무 많은 바이트를 전송하는 것을 할 수있다.

광고 패킷 데이터 길이는 사양에 따라 31 바이트로 제한됩니다. 예제에서 문자열에는 이미 18 바이트가 있지만 UUID에는 16 바이트가 있으므로 이미 너무 많습니다.

관련 문제