首先:我有一台iPad Air 2和一台iPhone 7.为了进一步阅读,我们估计该应用程序在iPad上处于活动状态并在iPhone上以后台模式打开。该应用程序是完全相同的,即使使用相同的蓝牙服务UUID和相同的DataLocalNameKey。iOS背景下的CoreBluetooth广告10
我想写一个应用程序,可以在后台广告蓝牙服务,并能够发现此服务(最佳在后台也)。 As I already read我不能使用苹果信标技术,因为它只能在背景附近扫描/通知信标(我测试过,工作正常),但不能做广告。所以我开始使用CoreBluetooth,如上面提到的SO答案中所描述的那样可以在后台做广告。
我的应用在iPhone上的CBCentralManagerDelegate(后台应用)中调用didDiscoverPeripheral
方法,因此它检测到了iPad。 CBPeripheralManager在iPhone上的isAdvertising
属性是true
。但是didDiscoverPeripheral
未在iPad上调用。我有点困惑。其中一种选择是我的iPad由于某些原因无法检测到iPhone,或者我的iPhone正在撒谎而不是广告。
所以我认为我只是有点愚蠢和谷歌调试“CoreBluetooth调试应用程序”。我发现Vicinity和AltBeacon。而对于这两款应用程序,行为都是一样的!如果您背景(按Home /睡眠按钮)广告应用程序,浏览应用程序无法再发现它。如果你打开应用程序的背景,它会立即发现它。这两个应用程序都提到可以与他们一起在后台播放。
我做错了什么;这是行为预期?我误解了框架吗?你能证实这种行为吗?
要确认这一点,最快的方法是在两台设备上安装Vicinity(您必须将NSBluetoothPeripheralUsageDescription
键添加到Info.plist),将一台设备设置为广播并按主页按钮。
好。我向我的广告客户添加了一项服务,如'cbPeripheralManager!.add(CBMutableService(type:random cbuuid,primary:true))'。我将这个uuid添加到'scanForPeripheralsWithServices'。因此,苹果提到的一切都在这里完成:广告方面有一个ServiceUUID,我有一个iOS设备明确扫描它。反正不要工作。 – flashspys
如果您安装了其他在后台投放广告的应用,则“溢出区域”中可能没有足够的空间。尝试卸载这些应用程序,因为它听起来像你已经尝试了几个。 – davidgyoung
我删除了所有的应用程序并重新安装了我的开发应用程序。没有什么改变 – flashspys