2013-08-01 146 views
4

我正在製作一個應用程序,其中iOS設備必須同時處於外圍和中心位置。當它發現一個外設時,有時它的名字是模型(例如iPhone)而不是實際名稱(例如我的iPhone)。在這種情況下,UUID就在那裏(當名稱是實際名稱時,通常是(null))。我在startAdvertising:中正確設置了名稱,發生這種情況時,真實姓名不是由相應的密鑰給出的advertisementData核心藍牙的問題

如何確保真名始終存在?

這是我如何設置名稱:

[self.peripheralManager startAdvertising:@{ CBAdvertisementDataLocalNameKey : [[UIDevice currentDevice] name], CBAdvertisementDataServiceUUIDsKey : @[SERVICE_UUID] }]; 

回答

2

除非是廣告的應用程序是不斷地在前臺,也不能保證你所搜索的廣告數據(不是具體的服務等爲)將是可見的。當應用程序移動到背景時,爲了在使用corebluetooth同時運行多個應用程序時獲得相同的體驗,單個應用程序(因爲iPhone本身只能宣傳有限數量的數據)會將副數據放入哈希中。但是,我注意到,一旦設備在前臺看到,如果應用程序移動到後臺,您仍然可以看到大部分的adv數據。如果您有任何問題,請告訴我。

+0

到目前爲止,這一直髮生在前臺... – Macro206

+0

您是否正確地設置廣告詞典中的CBAdvertisementDataLocalNameKey鍵? –

+0

我正確設置它。 – Macro206