我创建了一个与Android手表配对的iPhone应用程序。
每当设备之间的连接丢失时,我都会发送自动重新连接。
if let array:NSArray = self.centralManager.retrievePeripheralsWithIdentifiers([(reconnectedPeripheral?.identifier)!]){
if array.count > 0 {
let peripherals:CBPeripheral = array[0] as! CBPeripheral
centralManager.connectPeripheral(peripherals, options: nil);
self.scannedPeripheral = peripherals
self.scannedPeripheral?.delegate = self;
scanType = .Reconnect
}
}
我还有一个手动重新连接按钮,允许用户在自动重新连接不起作用的情况下手动重新连接。在手动重新连接的情况下,也会调用上面的代码。
如果将连接请求发送到手表两次,会发生什么情况?手表会收到两个连接请求吗?
根据BLE标准,两个设备同时有多个连接是非法的。控制器应该注意它只是丢弃连接请求(但谁知道是否有错误的控制器忘记了这一点(。
无论如何,从站必须执行可连接的广告才能接受新连接。
我也非常确定iOS永远不会多次尝试连接到同一设备。如果您多次调用connectPeripheral ,我认为没关系。此外,如果您有两个应用程序连接到同一个从属设备,它会将两个应用程序"多路复用"到单个 GATT 连接。