iOS CoreBluetooth作为外设和后台同时在后台运行

时间:2014-09-24 03:08:39

标签: background core-bluetooth simultaneous cbcentralmanager peripherals

我正在使用iOS8中的CoreBluetooth编写应用程序,该应用程序使用该应用程序检测并连接到其他手机。我试图找出能够创建连接的最佳方式,同时这两个应用程序都是背景的,但在两个手机都是背景+锁定的情况下一直有困难。我遵循了这篇文章的建议:

How to detect nearby devices with Bluetooth LE in iOS 7.1 both in background and foreground?

当两部手机都背景+锁定时,我无法建立连接,但是我已经能够连接外围设备和中央部分后置+锁定的连接,然后解锁中央设备(中央仍在的背景)。当我解锁外设虽然没有任何反应。当它们背景但没有锁定时它也可以工作。

因此,为了在解锁“外围设备”时建立连接,我决定在两部手机上创建一个中央和外围设备,以便同时扫描和播放。无论哪一个发现另一个将首先停止扫描/广告和连接。我遇到了这个方法的问题,这些问题在以下两个问题中有详细说明:

Peripheral and central at the same time on iOS

iOS CoreBluetooth Simultaneous Peripheral and Central Managers

基本上,我认为当我的两个设备同时尝试相互连接时,他们会挂断尝试连接,并且永远不会在其中任何一个上调用didConnectPeripheral(这两个显示的最后一件事都是消息说他们正试图连接)。它偶尔会工作,所以我也有点困惑为什么连接存在概率性质。有没有人对如何处理这个问题有任何建议?如果有两个应用程序背景和锁定时建立连接的更好方法,请告诉我,因为这是我原来的问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

在Info.plist中声明bluetooth-centralbluetooth-peripheral background modes,以便在后台执行中央和外围角色。