2013-02-12 109 views
4

我想宣傳一個單一的ID可以說在一個可調設備上的「stackoverflow1」。所以接近傳感器的人可以在iPhone上看到這條消息(歡迎來到wwdc2012)作爲彈出窗口。而已!這意味着沒有更新的價值或其他任何東西換句話說,我只是想知道哪個房間我進來了。在另一個房間裏有另一個傳感器逆向「stackoverflow2」。藍牙低功耗廣告數據包和拓撲結構

現在的問題是,我應該把房間的傳感器(廣告客戶)作爲外圍設備和訪問者的iPhone作爲中心嗎?

如果您的答案是肯定的,我可以在廣告數據包中發送此ID嗎?即我可以跳過連接到房間的外圍設備嗎?請指導我一點點,但在這個

感謝

回答

4

是,iPhone的應該是切牙和房間內設備應該是一個外圍設備。在廣告中放置足夠的數據是完全正確的,iOS應用程序只需看到外部廣告而不實際連接到它就可以做一些有用的事情。這樣,多箇中央電話/手機可以一次檢測到鄰近位置,而無需單個手機與設備建立專屬連接。而不是在服務名稱中指定房間,您應該可以將其放入設備的廣告數據中,併爲其提供所有相同的服務名稱。這樣,iOS應用程序無需提前知道房間的完整列表(即服務),並且可以在不更改應用程序的情況下添加它們。

總之,你所描述的要點應該工作得很好,對我來說好像是一個很好的方法。

+0

這是我能給出的最好答案。非常感謝。我希望你也可以指出我如何把數據放入廣告數據的正確方向。由於某些原因蘋果不在覈心藍牙中爲CBPeripheral提供類參考。在那裏你只能找到CBPheripheralDelegate。 – CppChase 2013-02-13 08:49:49

4

您可以將來自外設的信息包含在「Manufacturer Specific」數據中。然後iOS應用程序可以使用CBAdvertisementDataManufacturerDataKey從廣告數據字典中獲取它。

+0

不幸的是我不認爲你可以使用該密鑰。從文檔:advertisementData 一個可選字典,包含您想要通告的數據。 CBCentralManagerDelegate協議參考中詳細介紹了advertisementData字典的可能密鑰。也就是說,外圍管理器對象僅支持兩個鍵:CBAdvertisementDataLocalNameKey和CBAdvertisementDataServiceUUIDsKey。 – mflac 2014-01-31 04:34:45

+0

請記住,在我的情況下,手機是中央,它連接到外設。外圍設備使用數據填充CBAdvertisementDataManufacturerDataKey,並且我從廣告數據中抽出該密鑰而沒有問題。例如:'NSData * versionInfo = [advertisementData objectForKey:CBAdvertisementDataManufacturerDataKey];' – 2014-02-07 17:01:50