ios – 蓝牙LE,scanForPeripheralsWithServices在后台增加速度

ios – 蓝牙LE,scanForPeripheralsWithServices在后台增加速度,第1张

概述我在iPhone 5S上使用蓝牙LE,我做了以下工作: >我有一个蓝牙外设,我配置它在所有三个蓝牙广告频道(37,38和39)上宣布每20秒. >我已经配置了我的应用程序与UIBacgroundModes =蓝牙中央在Info.plist >我已经启动了一个scanForPeripheralsWithServices,如下所示 码: NSDictionary *options = @{ C 我在iPhone 5S上使用蓝牙LE,我做了以下工作:

>我有一个蓝牙外设,我配置它在所有三个蓝牙广告频道(37,38和39)上宣布每20秒.
>我已经配置了我的应用程序与UIBacgroundModes =蓝牙中央在Info.pList
>我已经启动了一个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];

目前的状态是:

>在前台模式下,当我启动外围设备时(一秒钟内),应用程序会迅速收到广告消息
>在后台模式下,应用程序有时会在启动外设后10秒钟内收到广告消息(即使是不好的话也可以接受),但是经常会在很长的时间(分钟或更长时间)内收到广告,不适用于应用程序.

问题是:

当扫描应用程序处于背景状态时,是否可以以某种方式提高iOS在蓝牙4.0 LE外设中扫描的速度?由于我不认为有公共API来执行此 *** 作,因此我正在寻找一个未由Apple发布的私有API.这是一个内部企业应用程序,所以私有API将是完全正常的.

解决方法 背景模式的工作方式不同,用于扫描.

>每个外围设备仅在第一次观察时报告(在后台模式下,无法通过RSSI跟踪接口,而无需连接).
>您可以向不在范围内的外设发起连接请求,当外设可用时,连接将完成.不必主动扫描(除了初始发现,所以你知道要连接哪个UUID).

也许,您可以通过发送连接请求而不是扫描来解决问题,而在后台.这样,iOS知道你对一个特定的外设感兴趣,我可以想象这会影响发现时间.

根据您的目标,不同的方法可能是通过将iPhone置于外设模式并使用当前的LE外设在中央模式下来反转连接.似乎是黑客,但如果它解决了你的情况的问题:为什么不:)

关于私人API:对不起,我不知道影响扫描参数的.

总结

以上是内存溢出为你收集整理的ios – 蓝牙LE,scanForPeripheralsWithServices在后台增加速度全部内容,希望文章能够帮你解决ios – 蓝牙LE,scanForPeripheralsWithServices在后台增加速度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1097206.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存