Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CBPeripheral name is sometimes null

I'm working on developing an app to communicate with a Bluetooth LE peripheral. The peripheral I am testing with at the moment is one of these. The interesting thing is, sometimes when I discover it I get its proper name, "SimpleBLEPeripheral", sometimes I just get (null). There doesn't seem to be any command I can send to the CBPeripheral to force a read update on the name, so how can I ensure that I actually get the advertised name of the peripheral?

like image 979
Dan F Avatar asked Sep 04 '12 13:09

Dan F


1 Answers

If you get the name from the advertisingData NSDictionary it will always be the name that is in the advertising packet sent by the peripheral.

However, if you read the name property of a CBPeripheral object, that name may vary. We try to provide the best name know to us at the time. If we have not yet connected to the peripheral, we will provided the name from the advertising packet. If a connection to the peripheral has been made in the past, we will have read the GAP name. We consider the GAP name to be a 'better' name than what is in the advertising packet (due to the size constraints of the advertising packet).

like image 83
prashant Avatar answered Nov 16 '22 04:11

prashant