didDiscoverPeripheral advertising data different between iOS 9 and iOS 8

Hi.


We have an application that extracts manufacturer data from the advertising data parameter for didDiscoverPeripheral delegate method.

Under iOS 9 the data retrieved by extracting the object associated with CBAdvertisementDataManufacturerDataKey has more bytes than the same data retrieved under iOS 7 and iOS 8.


For example:


iOS 9 manufacturing data: @"\x01\0\x01\x02\0SB106492\x01"

iOS 8 manufacturing data: @"\x02\0SB106492\x01"


Is this expected?

What is the correct way to extract manufacturer data from the advertising packet given the differences between iOS 8 and 9?


Thanks

Can you give details on the device please.

Manufacturer, chip maker, firmware version, etc.


Also, can you do a 'po' on the whole advertising data dictionary and share it here plase.

Both on iOS 8 and 9 if you can.

Thanks for the reply.


The device is manufactured by my company. We are using the Texas Instruments CC2540F256 microcontroller. We are using the TI BLE stack both version 1.3.2 and 1.4.0.


By 'po' do you mean print out?


Thanks

Advertising packet print out below.


Thanks


iOS 9

-----


Advertising packet component: key=kCBAdvDataIsConnectable value=1

Advertising packet component: key=kCBAdvDataLocalName value=SmartTurbo

Advertising packet component: key=kCBAdvDataServiceUUIDs value=("F1A42260-AA44-11E2-9E96-0800200C9A66")

Advertising packet component: key=kCBAdvDataTxPowerLevel value=4

Advertising packet component: key=kCBAdvDataManufacturerData value=<01000102 00534231 30363439 3201> length=14


iOS 8

-----


Advertising packet component: key=kCBAdvDataIsConnectable value=1

Advertising packet component: key=kCBAdvDataLocalName value=SmartTurbo

Advertising packet component: key=kCBAdvDataServiceUUIDs value=("F1A42260-AA44-11E2-9E96-0800200C9A66")

Advertising packet component: key=kCBAdvDataTxPowerLevel value=4

Advertising packet component: key=kCBAdvDataManufacturerData value=<02005342 31303634 393201> length=11

What you are seeing is due to a change in iOS 9.

If the accessory advertises mfg data in both the advertising packet (ADV_IND) and the scan response (SCAN_RSP), previously iOS would only hand back the data from the scan response. iOS 9 will now concatenate the two fields to provide all the data from the device.

Did the iOS9 also *hide* the other manufacturer speicifc data which is carried in scan_rsp along with an iBeacon adv packet from discovery of application via didDiscoverPeripheral?

didDiscoverPeripheral advertising data different between iOS 9 and iOS 8
 
 
Q