Swift 并非在所有情况下都调用 BLE 函数 didConnectPeripheral
Swift BLE function didConnectPeripheral isn't called in all cases
我编写了一个 iOS 应用程序来将一些数据从我的 IPhone 传输到蓝牙低功耗模块。直到前天,一切正常......但似乎我昨天做了一个不好的改变,现在,我的应用程序不再工作了。 didConnectPeripheral
函数未被调用。以后我每天都要备份我的代码...反正这是连接到我的设备的功能:
在class ScanTableView:
var bluetoothManager: BluetoothManager = BluetoothManager()
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
selectedPeripheralIndex = indexPath.row
print(selectedPeripheralIndex!)
bluetoothManager.CBmanager.connectPeripheral(peripheralArray[selectedPeripheralIndex].peripheral, options: nil)
}
有什么遗漏吗?当我在 BluetoothManager
class 中使用 connectPeripheral
func 时,我可以毫无问题地连接...但是我希望能够选择正确的 BLE 设备等等我必须在用户选择一行后连接。
在class蓝牙管理器
var CBmanager: CBCentralManager = CBCentralManager()
func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber)
{
let UUID = "\(peripheral.identifier)".substringFromIndex("\(peripheral.identifier)".startIndex.advancedBy(31))
if !peripheralArray.contains({[=12=].UUID == UUID})
{
if peripheral.name != nil
{
peripheralArray.append(BluetoothPeripheral(name: peripheral.name!, UUID: UUID, RSSI: RSSI, peripheral: peripheral))
if peripheral.name!.containsString(DEVICE_NAME)
{
CBmanager.connectPeripheral(peripheralArray[selectedPeripheralIndex].peripheral, options: nil)
}
}
}
}
有什么想法吗?
好的,我解决了这个问题。好像是全局数组的问题
peripheralArray
。如果我使用本地数组,它就可以工作!
我编写了一个 iOS 应用程序来将一些数据从我的 IPhone 传输到蓝牙低功耗模块。直到前天,一切正常......但似乎我昨天做了一个不好的改变,现在,我的应用程序不再工作了。 didConnectPeripheral
函数未被调用。以后我每天都要备份我的代码...反正这是连接到我的设备的功能:
在class ScanTableView:
var bluetoothManager: BluetoothManager = BluetoothManager()
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
selectedPeripheralIndex = indexPath.row
print(selectedPeripheralIndex!)
bluetoothManager.CBmanager.connectPeripheral(peripheralArray[selectedPeripheralIndex].peripheral, options: nil)
}
有什么遗漏吗?当我在 BluetoothManager
class 中使用 connectPeripheral
func 时,我可以毫无问题地连接...但是我希望能够选择正确的 BLE 设备等等我必须在用户选择一行后连接。
在class蓝牙管理器
var CBmanager: CBCentralManager = CBCentralManager()
func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber)
{
let UUID = "\(peripheral.identifier)".substringFromIndex("\(peripheral.identifier)".startIndex.advancedBy(31))
if !peripheralArray.contains({[=12=].UUID == UUID})
{
if peripheral.name != nil
{
peripheralArray.append(BluetoothPeripheral(name: peripheral.name!, UUID: UUID, RSSI: RSSI, peripheral: peripheral))
if peripheral.name!.containsString(DEVICE_NAME)
{
CBmanager.connectPeripheral(peripheralArray[selectedPeripheralIndex].peripheral, options: nil)
}
}
}
}
有什么想法吗?
好的,我解决了这个问题。好像是全局数组的问题
peripheralArray
。如果我使用本地数组,它就可以工作!