www*_*.se 10 bluetooth ios core-bluetooth bluetooth-lowenergy ios-enterprise
我在iPhone 5S上使用蓝牙LE,我做了以下事情:
我有一个蓝牙外设,我已经配置它在所有三个蓝牙广告频道(37,38和39)上宣传每个20毫秒.
我在Info.plist中使用UIBacgroundModes = bluetooth-central配置了我的应用程序
我已经启动了scanForPeripheralsWithServices,如下所示
码:
NSDictionary *options = @{
CBCentralManagerOptionRestoreIdentifierKey:@"myCentralManagerIdentifier",
CBCentralManagerScanOptionAllowDuplicatesKey:[NSNumber numberWithBool:YES]
};
self.manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:options];
[self.manager scanForPeripheralsWithServices:[NSArray arrayWithObject:[CBUUID UUIDWithString:@"<uuid removed>"]] options:options];
Run Code Online (Sandbox Code Playgroud)
目前的状态是:
在前台模式下,当我启动外围设备时,应用程序会快速接收广告消息(一秒钟内)
在后台模式下,应用程序有时会在启动外围设备后的10秒内接收广告消息(即使它很糟糕也可以接受)但是通常它不会在很长时间内(几分钟或更长时间)收到广告而这不是为申请工作.
问题是:
在扫描应用程序处于后台时,是否可以通过某种方式提高iOS扫描蓝牙4.0 LE外围设备的速率?由于我认为没有公共API可以做到这一点,我正在寻找一个Apple未发布的私有API.这适用于内部企业应用程序,因此私有API将完全正常.
背景模式对扫描的工作方式不同
每个外围设备仅在第一次观察时报告(在后台模式下,如果不连接RSSI,则无法跟踪RSSI的接近程度).
您可以向不在范围内的外围设备发起连接请求,并在外围设备可用时完成连接.不必主动扫描(初始发现除外,因此您知道要连接的UUID).
也许,您可以通过在后台发送连接请求而不是扫描来解决问题.这样,iOS知道你真的对特定的外围设备感兴趣,我可以想象这会影响发现时间.
根据您的目标,不同的方法可以是通过将iPhone置于外围模式并在中央模式下使用当前的LE外设来反转连接.看似hackish,但如果它解决了你的情况的问题:为什么不:)
关于私有API:抱歉,我不知道影响扫描参数的API.
| 归档时间: |
|
| 查看次数: |
7083 次 |
| 最近记录: |