如何将 BLE 活动继续到下一个视图控制器
How to continue BLE activities onto next view controller
我正在开发一个应用程序来扫描附近的 BLE 设备,连接到其中一个设备,并与连接的设备通信。我尝试在 2 个视图控制器、controller-A 和 controller-B 中进行操作。 Controller-A 会扫描附近的设备并连接到其中一个。控制器 B 将与连接的设备交换数据。 Controller-A 扩展了 CBCentralManagerDelegate。我的问题是:当我的应用程序切换到视图控制器 B 时,它没有从 CBCentralManager 获得回调。我必须在控制器 B 中再次初始化 CBCentralManager。我还必须断开设备与控制器 A 的连接,然后在控制器 B 中重新连接。有更好的方法吗?谢谢。
将您的 BLE 相关代码放在一个集中的地方,例如BLEMaganer(更好)或 AppDelegate(一般)。这样controllerA和controllerB可以共享同一个centrolManager实例。
例如,目前你在controllerA中有一个属性 centralManager
,并在controllerA中实现它的delegate。您通过 controllerA.centralManager
.
访问 centralManager
将centralManager
属性 以及其他相关代码移动到AppDelegate
。然后你可以通过
访问centrolManager实例
(UIApplication.sharedApplication().delegate as! AppDelegate).centralManager.
我正在开发一个应用程序来扫描附近的 BLE 设备,连接到其中一个设备,并与连接的设备通信。我尝试在 2 个视图控制器、controller-A 和 controller-B 中进行操作。 Controller-A 会扫描附近的设备并连接到其中一个。控制器 B 将与连接的设备交换数据。 Controller-A 扩展了 CBCentralManagerDelegate。我的问题是:当我的应用程序切换到视图控制器 B 时,它没有从 CBCentralManager 获得回调。我必须在控制器 B 中再次初始化 CBCentralManager。我还必须断开设备与控制器 A 的连接,然后在控制器 B 中重新连接。有更好的方法吗?谢谢。
将您的 BLE 相关代码放在一个集中的地方,例如BLEMaganer(更好)或 AppDelegate(一般)。这样controllerA和controllerB可以共享同一个centrolManager实例。
例如,目前你在controllerA中有一个属性 centralManager
,并在controllerA中实现它的delegate。您通过 controllerA.centralManager
.
将centralManager
属性 以及其他相关代码移动到AppDelegate
。然后你可以通过
(UIApplication.sharedApplication().delegate as! AppDelegate).centralManager.