ios - BLE 设备 - 相同的代码和相同的固件适用于 iphone SE,但在 iphone 7 plus 中效果不佳

标签 ios iphone swift bluetooth-lowenergy ibeacon

我正在使用 ibeacon。我创建了一个跟踪设备的应用程序。但是我遇到了应用程序的问题。该应用程序在 iPhone SE 的终止状态下运行良好,但它不适用于 iPhone 7+(在锁定状态)。在解锁状态下,它也适用于 7+,但与 iPhone SE 相比仍然非常慢。这个问题有什么具体原因吗。如果可以解决,这个问题可能的解决方案是什么。

我对这个问题真的很无助和无能。请帮助我,并用你的知识帮助我,先生。提前谢谢你。

最佳答案

当 iOS 应用程序在后台时,它依赖于两种不同的机制来检测信标:

  1. 硬件过滤器。这些是存储在蓝牙芯片上的字节模式,当收到与您的信标区域匹配的 BLE 广告数据包时,它们会提醒操作系统。这种机制非常快,可以在一秒钟内提供结果,但它是一种有限的资源。一旦所有插槽都已满,它将不再工作。没有关于每个 iPhone 型号上可用插槽数量的文档,但实验表明该数量约为 30。

  2. 软件扫描。执行完整的 BLE 扫描以查找所有信标,即使它们未存储在硬件过滤器中也是如此。在测距事件的前台,软件扫描是恒定的。在后台它们会周期性地节省电量,因此基于软件扫描的检测要慢得多。该速率没有记录,但实验表明,在典型的手机状态下,软件扫描每约 10 分钟在后台执行一次。当屏幕解锁时,还会执行额外的软件扫描。

问题描述与硬件过滤器(1)在 iPhone 7+ 上不工作一致。这可能不是手机型号的问题,可能是特定设备的问题,或者更可能是手机上的软件状态问题。一个典型的原因是安装了多个用完所有插槽的信标应用程序。每个信标应用程序最多可以注册 20 个信标区域进行监控,因此只需两个应用程序就可以用完所有插槽!第一个运行并注册插槽的应用程序可能会永远保留它们。

一些故障排除技巧:

  1. 卸载您认为可能的任何其他应用程序。检测信标,然后重新安装您的信标。
  2. 重新启动您的设备。

如果上述方法没有帮助,您的设备可能有硬件问题。尝试另一台 iPhone 7+ 看看是否可以重现。

关于ios - BLE 设备 - 相同的代码和相同的固件适用于 iphone SE,但在 iphone 7 plus 中效果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51393675/

相关文章:

ios - 自定义 Segue - 无法识别的选择器发送到实例 - setUseDefaultModalPresentationStyle

ios - Fabric : Answers: purchase flow tracking of `success` bool doesn't work as expected

iphone - App Store 中的应用程序名称

iphone - NSUserDefaults性能比较

ios - 文本字段委托(delegate)快速

iphone - 按日期从 iPhone 中删除本地通知

iphone - 如何隐藏 iOS 数字键盘

ios - SCNText 不显示

swift - 关于 Swift 选择器的 4 个问题

ios - 如何修改我的 UILabel 子类以便它可以接受自定义值?