【问题标题】:iOS iBeacons Not Working on Few DevicesiOS iBeacons 无法在少数设备上运行
【发布时间】:2015-02-24 12:16:03
【问题描述】:

我一直在尝试运行 iBeacon Receiver 示例。该代码应该检测设备进入区域并退出区域。 iBeacon 区域由运行在另一台 iOS 设备上的发射器创建。

接收器代码在我拥有的其中一台设备(iOS 7.0.1)中完美运行。它正在检测该区域的进出。但是相同的代码在其他几台装有 iOS 7.1 [iPad Air] 和 iOS 8.0 [iPad Mini] 的设备上不起作用。

我相信这些硬件支持蓝牙 LE。

我会丢失设备上的一些配置吗?我无法追踪它。你能推荐一下吗?

【问题讨论】:

  • “不起作用”是什么意思?这不是对任何有意义的事情的描述。只有期望和实际结果。实际发生了什么?并非每个设备都有正确的硬件。您应该在代码运行之前预先测试它。如果您这样做并且您的代码正常失败,那么它正在工作。
  • 嗨,马特,向问题添加了更多信息。
  • 您并没有真正添加更多信息。您没有显示“接收者代码”,那么任何人都怎么知道这是否是正确编写的代码?要提出问题,请展示您的代码并说明实际发生的情况以及您如何知道实际发生的情况。有一种“感觉”“不起作用”的感觉不是编程,它还不够具体,不足以成为一个好的 Stack Overflow 问题。为什么有人应该相信否则它“不起作用”?到目前为止,我们所知道的是你认为它不起作用,这并不有趣。

标签: ios bluetooth-lowenergy ibeacon btle


【解决方案1】:

在 iOS 7 上运行的 Beacon 应用程序在为 iOS 8 构建时,如果它们没有请求位置权限,它们将无法检测到信标。详情请看这里:

In iOS 8 Beacon not detecting

这无法解释为什么您提到的代码在 iOS 7.1 上不起作用,因此该设备可能存在硬件问题(蓝牙关闭或不支持蓝牙 LE。)第一个支持蓝牙 LE 的 iOS 设备是 iPhone 4S 所以 4早期的设备无法检测到信标。

【讨论】:

  • 亲爱的大卫,我正在使用最新的设备。 iPad Air 和 iPad Mini。他们确实支持蓝牙 LE!
  • 我会尝试使用像 Locate 这样的现成应用来检测这些设备上的信标。如果这不起作用,则可能表示硬件问题。 itunes.apple.com/us/app/locate-beacon/id738709014?mt=8
【解决方案2】:

AFA iOS 8,当您请求权限时,请务必添加新的 info.plist 条目来描述您的应用程序请求特定权限类型的原因,否则它将继续(令人沮丧地)静默失败。

查看http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/(通过SO链接到:iOS: App is not asking user's permission while installing the app. getting kCLAuthorizationStatusNotDetermined every time - Objective-c & Swift)了解更多信息。

我看到的一个表明您处于“没有 plist 条目”状态的症状是,在“设置”中查看定位服务权限时,您可以手动将权限设置为“始终”,但是当您运行应用程序,选择清除(也就是说,您没有选择该应用程序的位置服务权限)。

【讨论】:

  • 亲爱的布拉德,同样的尝试。他们正在通过类似的提示请求许可。但是即使允许位置检测后,也检测不到区域进出!
  • 在故障排除方面,我还发现修改Apple的AirLocate示例代码(大部分只是添加UUID)和LightBlue(App Store中的第三方应用程序,用于BTLE)的效果很好一般检测,不一定是信标)以帮助隔离是否是设备或软件未能注册。此外,当设备认为它已经“在该区域”时,不会发送输入通知(对于“外部”/退出也是如此),尽管我真的只看到这是实际区域监控的问题,而不是信标所以远。
猜你喜欢
  • 2023-03-22
  • 2015-10-01
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多