2014-12-02 95 views
2

是否可以創建iOS應用程序來掃描附近的移動設備(例如iPhone,Android,iPad等),而無需在附近的移動設備上運行任何定製應用程序?從iOS應用程序中檢測附近的移動設備

我一直在使用CoreBluetooth像這樣嘗試過,在我的iPhone 6+運行:

[self.centralManager scanForPeripheralsWithServices:nil options:nil]; 

但它檢測到的只有附近的設備是我的iMac,它不會檢測到我的iPad 2的空氣,或者我的藍牙耳機。

我做錯了什麼?

+0

核心藍牙僅適用於藍牙低功耗設備,而不是傳統的藍牙。我想你的耳機是藍牙經典設備。 – 2014-12-02 10:22:30

+0

我對檢測移動設備更感興趣,例如。 iPad Air 2.這些應該是BLE? – 2014-12-02 18:53:05

+0

是的,他們是。但爲了可被發現,設備必須宣傳一個或多個BLE服務。你可以實現'CBPeripheralManager'來做到這一點,甚至還有來自蘋果公司的「掃描儀」和「外設」的示例代碼。 – 2014-12-02 19:05:04

回答

1

核心藍牙僅適用於藍牙低功耗(又名藍牙4.0)設備,而不是傳統的藍牙設備。爲了可被發現,設備必須通告一個或多個BLE服務。你可以實現CBPeripheralManager來做到這一點,甚至有來自Apple的sample code「掃描儀」和「外設」的一面。請注意,通過這種方式,您還可以發現或被其他移動設備發現,如Android智能手機。

我不知道是否有可能檢測到熱點或切換BLE服務。核心藍牙不允許您訪問「原始」藍牙低功耗廣告數據包,因此Apple可能會過濾掉一些內容。

如果您只想檢測iOS設備(並且沒有其他BLE設備/附件),則還可以使用Multipeer連接性框架。我個人覺得使用起來更容易,它甚至提供了一個內置的"discovered devices" view。但你仍然需要在雙方運行一個自定義應用程序。

0

如果您使用的是藍牙低功耗,它只會檢測BLE設備的外圍設備。 但是範圍有限制。由BLE裝置範圍文檔周圍300米。你可以在CBCentralManager周邊方法獲得的信號強度:

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI 

這裏RSSI是你的信號強度。但外圍設備必須BLE使即藍牙版本4.0或以上

+0

我測試的所有東西都放在我的桌子上 – 2014-12-02 18:53:32

0

如果你不需要在App Store上放置任何東西,你可以越獄你的iPhone並直接訪問數據包。

Bluetooth Companion,可在Cydia,將顯示您的手機上的藍牙數據包。我不確定該項目的源是否可用,但是您可以查看其他項目,如BTStack(有很好的Getting Started guide here)。

+0

雖然預期的目標是企業應用程序而不是App Store,但越獄不是一種選擇。感謝您的輸入。 – 2014-12-08 00:28:29

0

我會從參與嵌入式系統開發的人員的角度出發。如前所述,BLE只能檢測其他BLE設備的外圍設備,因此我認爲藍牙技術不適用於檢測附近移動設備的應用程序。

你的應用程序應該包含兩個檢測功能。人們應該使用藍牙來檢測普通PC並使用GPS來檢測其他移動設備,因爲它是唯一的其他外圍設備,我認爲它存在於Android和4G ipad mini等中。

對於您的聽筒,如果未檢測到那麼我不知道任何軟件解決方案會修改硬件不兼容性,所以我會建議您獲得與藍牙設備兼容的耳機。

你的問題不是軟件問題,它在於設備的硬件限制。