Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 了解蓝牙扫描和连接流程_Ios_Core Bluetooth_Ios Bluetooth_Cbcentralmanager - Fatal编程技术网

Ios 了解蓝牙扫描和连接流程

Ios 了解蓝牙扫描和连接流程,ios,core-bluetooth,ios-bluetooth,cbcentralmanager,Ios,Core Bluetooth,Ios Bluetooth,Cbcentralmanager,我正在试验corebooth,我偶然发现了一些我不懂的东西。 在扫描附近的蓝牙设备时,当我记录结果时,我无法理解输出,例如,找到的一些设备: discovered peripheral = <CBPeripheral: 0x281b7c140, identifier = FC3098A3-426F-F1CF-C053-1D62E3EDE473, name = (null), state = disconnected> discovered peripheral = <CBP

我正在试验
corebooth
,我偶然发现了一些我不懂的东西。 在扫描附近的蓝牙设备时,当我记录结果时,我无法理解输出,例如,找到的一些设备:

discovered peripheral =  <CBPeripheral: 0x281b7c140, identifier = FC3098A3-426F-F1CF-C053-1D62E3EDE473, name = (null), state = disconnected>
discovered peripheral =  <CBPeripheral: 0x281b78000, identifier = 3313CAC4-3D8F-C225-4ABB-73390CCA1DC3, name = SL-1000S_BLE(ATT), state = disconnected>
discovered peripheral =  <CBPeripheral: 0x281b640a0, identifier = D509D6C8-F5C4-E2E5-9387-B6294BCA5396, name = (null), state = disconnected>
discovered peripheral =  <CBPeripheral: 0x281b78140, identifier = A2DC3485-F341-4AAB-6B09-8816FFACA15A, name = (null), state = disconnected>
discovered peripheral =  <CBPeripheral: 0x281b7c280, identifier = 89069574-F6F9-0637-1723-FEB36C3EE2B8, name = (null), state = disconnected>
discovered peripheral =  <CBPeripheral: 0x281b78280, identifier = 792BCEC8-471F-2327-6AD1-33EC57F2A758, name = (null), state = disconnected>
discovered peripheral =  <CBPeripheral: 0x281b783c0, identifier = B7A4C076-D761-5646-0E66-DA832A9061BB, name = Amazfit Band 5, state = disconnected>
discovered peripheral =  <CBPeripheral: 0x281b7c3c0, identifier = 759BD68B-0E48-F0D6-1C08-43F4D2DA528A, name = (null), state = disconnected> 

设备的AVDVertising数据(例如,一个设备发出的声音:“我在这里,我的名字是ZzZ,我透露我有一些UUID AaA的服务…)可能相当长,并且是逐件发送的。因为您刚刚收到“基本件”“没有名字,你以后会得到名字。在您的情况下,我也会使用
CBCentralManagerScanOptionAllowDuplicatesKey
true
。如果我记得的话,状态在你的应用程序中。也就是说,如果你的应用程序本身没有连接,它就会断开连接。你不知道是否有另一个应用程序。@Larme,你说的
是什么意思?你以后会得到这个名称的
?只有在通过设置手动连接后,我才能获取该名称。将true设置为允许的duplicateKey,然后进行扫描。在didDiscover中,打印发现的外围设备,即使它存在于
外围设备阵列中。同时打印
广告数据
。设备应该出现多次,并且信息比第一次多。@Larme,我尝试了你的建议,但在日志中看到了相同的结果,没有任何变化。每次更新
didDiscover
方法时,我都会记录
peripheral
数据和
advertisementData
,但我没有得到新信息。
discovered peripheral =  <CBPeripheral: 0x281b790e0, identifier = 7E34D617-731F-616E-8C89-5729870CDD5E, name = Edward's Galaxy S9+, state = disconnected>
override func viewDidLoad() {
        super.viewDidLoad()
        
        centralManager = CBCentralManager(delegate: self, queue: nil)
    }

func centralManagerDidUpdateState(_ central: CBCentralManager) {
    
    switch central.state {
        case .poweredOn:
            print("poweredOn")
            self.centralManager?.scanForPeripherals(withServices: nil, options: [CBCentralManagerScanOptionAllowDuplicatesKey:false])
            break
        @unknown default:
            print("default")
            break
    }
}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {

    if(!peripheralsArray.contains(where: { $0.identifier == peripheral.identifier})) {
        print("discovered peripheral = ", peripheral)
        peripheralsArray.append(peripheral)
    }
 }