繁体   English   中英

使ios7 BLE外设在后台工作

[英]Making ios7 BLE peripheral to work in background

我已经阅读了所有相关信息,但仍无法使我的iOS7设备在后台像外围广告客户一样工作。 它在前景很好,但在后台我什至可以发现它。 我在plist文件中使用CoreBluetooth添加了应用共享数据 我读到,进入后台后,它将我的自定义UUID放入溢出数据中。 我也尝试过这个(但没有运气)。

NSDictionary *advertisingData = @{
 CBAdvertisementDataServiceUUIDsKey : @[CBUUID UUIDWithString:TRANSFER_SERVICE_UUID],
 CBAdvertisementDataOverflowServiceUUIDsKey : @[CBUUID UUIDWithString:TRANSFER_SERVICE_UUID]
};  
[manager startAdvertising:advertisingData];

在另一端的中央(MAC OS应用程序),我仅在扫描我的: TRANSFER_SERVICE_UUID服务。 有什么我想错过的事情我应该在中央方面另外实施吗?

请注意startAdvertising:方法文档中的这一行:

当应用程序在后台运行时,将不使用本地名称,并且所有服务UUID都将放置在“溢出”区域中 但是,未指定“蓝牙外围设备”后台模式的应用程序将无法在后台进行任何广告。

也就是说,背景外围设备会从广告中删除所有内容,并且 iOS应用程序只能检测到它的存在 iOS应用程序可以到达溢出区域,而MacOS应用程序则不能。 您需要在MacOS端关闭服务过滤,才能检测外围设备并连接到外围设备,以发现外围设备是否具有搜索到的服务。

仅供参考,这种情况没有解决方法,在Apple bluetooth-dev邮件列表和许多SO问题中已经讨论了多次。

另请注意, CBAdvertisementDataOverflowServiceUUIDsKey不是startAdvertising:的有效输入键。 CBAdvertisementDataOverflowServiceUUIDsKey通过iOS版在返回didDiscoverPeripheral回调,如果它发现在溢出区的东西。 仅使用CBAdvertisementDataServiceUUIDsKey定义播发服务的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM