iOS(iPhone或iPad)应用程序可以同时拥有Core Bluetooth(BTLE)中央管理器和外围管理器对象吗?
它们可以异步操作,还是主应用程序线程需要使它们共享(来回切换).
共享概念算法将是:禁用外围设备管理器,启用中央管理器并执行中央功能,然后禁用中央管理器,启用外围设备mgr,并执行外围功能(即发送自动数据,等待并响应远程特性命令),重复......
背景技术细节:我们有一个本地系统,有多个iOS设备和多个非iOS设备,需要通过BTLE进行互通.非iOS设备均使用Broadcom BCM20732蓝牙LE芯片.但硬件还没有准备好,所以我使用iOS设备来模拟非iOS,这需要同步中央和外围功能,即.1.充当集中询问系统中多个其他非iOS设备的核心.2.充当外围设备以响应来自iOS用户界面设备的数据请求.
我在iOS8中使用CoreBluetooth编写应用程序,使用该应用程序检测并连接到其他手机.我试图找出能够创建连接的最佳方式,同时两个应用程序都是后台运行,但在两个手机都背景+锁定的情况下一直有困难.我遵循了这篇文章的建议:
如何在iOS 7.1的后台和前台中使用蓝牙LE检测附近的设备?
当两部手机都背景+锁定时,我无法建立连接,但我已经能够获得连接,其中外围设备和中央部分背景+锁定,然后我解锁中央(中央仍然在后台) .当我解锁外设虽然没有任何反应.当它们背景但没有锁定时它也可以工作.
因此,为了在解锁"外围设备"时建立连接,我决定在两部手机上创建一个中央和外围设备,以便同时进行扫描和广告.无论哪一个发现另一个将首先停止扫描/广告和连接.我遇到过这个方法的问题,这些问题在以下两个问题中有详细说明:
基本上,我认为当我的两个设备同时尝试相互连接时,他们会挂断尝试连接,并且永远不会在其中任何一个上调用didConnectPeripheral(它们都显示的最后一个消息是它们是试图连接).它偶尔会工作,所以我也有点困惑为什么连接存在概率性质.有没有人对如何处理这个问题有任何建议?如果在两个应用程序都是背景+锁定时建立连接的更好方法,请告诉我,因为这是我原来的问题.
谢谢!
peripherals background simultaneous core-bluetooth cbcentralmanager