0
A
回答
0
你想要做的是爲您掃描區域內所有CBPeripheral
什麼。CBPeripheral
是確實的廣播任何CBService
的類(s)外設可能做廣告。
要掃描這些外設,您需要一個CBCentralManager
的實例。 CBCentralManager
是您的外圍設備掃描的類。
要做到這一點,你必須實例化CBCentralManager
centralManager = CBCentralManager(delegate: self, queue: .main)
一個好主意是在掃描前外設告訴你CBCentralManager
,你只需要尋找獨特的外設只有一次。
let options: [String: Any] = [CBCentralManagerScanOptionAllowDuplicatesKey:
NSNumber(value: false)]
當你告訴你的CBCentralManager
掃描,不指定廣告CBPeripheral
(S)的任何服務。反而通過nil
這個參數來表明你想發現所有的外設。
centralManager?.scanForPeripherals(withServices: nil, options: options)
上述調用將開始實際掃描該區域的藍牙設備。您將在掃描結果中收到CBCentralManagerDelegate方法中的回調。
爲了讓藍牙設備,簡單的看一下所發現的CBPeripheral
(一個或多個)的名稱的名稱。您通過CBCentralManagerDelegate
方法didDiscover peripheral: CBPeripheral
來完成此操作。
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print("Discovered \(peripheral.name ?? "")")
}
0
if (!_centralManager) {
dispatch_queue_t queue = dispatch_get_main_queue();
_centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:queue options:@{CBCentralManagerOptionShowPowerAlertKey:@YES}];
[_centralManager setDelegate:self];
}
//found BLE
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
//Array add peripheral
}
0
我使用這樣的,連接按鈕單擊事件,並使用CBCentralManagerDelegate, CBPeripheralDelegate
代表
func connectDevice(sender:UIButton){
if peripheral != nil {
manager.cancelPeripheralConnection(peripheral)
manager = CBCentralManager(delegate: self, queue: nil)
}
}
func centralManagerDidUpdateState(central: CBCentralManager) {
if central.state == CBCentralManagerState.PoweredOn {
central.scanForPeripheralsWithServices(nil, options: nil)
} else {
self.showAlert(Messages().alert , message: "Bluetooth is not on.")
}
}
func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {
let device = (advertisementData as NSDictionary).objectForKey(CBAdvertisementDataLocalNameKey) as? NSString
print(device)
if device?.containsString(BEAN_NAME) == true {
self.manager.stopScan()
self.peripheral = peripheral
self.peripheral.delegate = self
manager.connectPeripheral(peripheral, options: nil)
}
}
相關問題
- 1. 藍牙設備掃描
- 2. 藍牙掃描設備
- 3. 在Qt中掃描藍牙設備
- 4. 無法掃描藍牙設備
- 5. 藍牙設備掃描不完整
- 6. 藍牙掃描C#
- 7. 如何在android中掃描可用的藍牙設備?
- 8. 如何定期掃描藍牙設備在Android
- 9. iOS,藍牙掃描儀塊wifi
- 10. 如何通過dbus API掃描藍牙LE設備?
- 11. 在Android上掃描特定的藍牙設備
- 12. 掃描藍牙設備無法在Android上運行事物DP3
- 13. Android藍牙LE掃描UUID
- 14. 掃描藍牙設備一旦出現uicontroller
- 15. 無法觸發掃描藍牙設備的警報管理器
- 16. 用MIT App Inventor 2掃描藍牙設備
- 17. 藍牙低功耗藍牙可以同時連接/掃描多少個藍牙設備?
- 18. 核心藍牙框架不掃描所有BLE設備和蘋果BLE設備
- 19. Android - 當掃描藍牙設備時,我的設備是否可被發現?
- 20. iOS Core藍牙獲取設備的所有功能描述
- 21. iOS藍牙通知應用程序藍牙設備連接時
- 22. 如何從藍牙條形碼掃描儀讀取數據到Android設備使用藍牙?
- 23. iOS藍牙不發現設備
- 24. IPhone藍牙連接到非IOS設備
- 25. 低功耗藍牙 - 如何掃描設備並搜索特定的特徵?
- 26. 如何將數據傳輸到Android中掃描的藍牙設備?
- 27. 更改藍牙查詢掃描時間
- 28. Android Froyo HTC Desire上的藍牙掃描
- 29. 藍牙LE掃描儀線程
- 30. Android的 - 藍牙 - 限制掃描範圍