【问题标题】:iOS 11 Beacon detection issue when device is locked设备锁定时的 iOS 11 信标检测问题
【发布时间】:2018-05-03 08:32:13
【问题描述】:

我正在开发信标应用程序,我正在使用 Kontkat.io 信标。当应用程序处于前台和后台时,Beacon 监控(进入/退出事件)工作正常。

在 iOS 11 中,当应用程序处于前台时,它工作正常,但当设备被锁定时,信标检测会停止,并且不会触发进入/退出事件。如果设备屏幕被锁定或应用程序在后台,我已经检查了低于 iOS 11 的版本及其触发 enter/exit 事件。这是 iOS 11 的限制还是我遗漏了什么?

注意:
我在 info.plist 中添加了 NSLocationAlwaysAndWhenInUseUsageDescription。

【问题讨论】:

  • 您是否检查了功能中的“使用蓝牙 LE 配件”??
  • 是的“使用蓝牙 LE 配件”在后台模式中被选中

标签: ios objective-c bluetooth core-location ibeacon


【解决方案1】:

我不确定这是否是一个答案,更多的是我的发现包含一个可能的答案。

我也在不同的设备和不同的设置中看到了这个问题。

我发现,如果我的 iPhone 没有从 iCloud 备份中恢复,也没有登录到 iCloud 帐户,那么它就可以工作。如果我从链接到我的 iCloud 帐户的 iCloud 备份恢复同一设备,它就不起作用。

我已经在多个设备上多次执行此操作,使用我的 iCloud 帐户的结果是相同的。

我已尝试对其他人的 iCloud 帐户进行相同的测试(并从他们拥有的 iCloud 备份恢复 iPhone),但似乎并非所有 iCloud 帐户都发生这种情况。

当我似乎能够通过关闭“iCloud Backup”来使其工作时,我以为我已经接近解决方案了,但这似乎只是一个巧合。

尝试在“新”的 iOS 设备上运行您的应用,看看会发生什么。

【讨论】:

    【解决方案2】:

    转到设置 -> 应用程序 -> 权限并确保已授予“始终”位置权限,而不仅仅是“使用时”。

    确保除了 info.plist 中的 NSLocationAlwaysAndWhenInUseUsageDescription 之外,还有一个 NSLocationWhenInUseUsageDescription 字符串。两者都是 iOS 11 所必需的

    如果您之前使用 XCode 8 构建和安装过,您可能还需要卸载并重新安装。确保看到权限对话框并选择“始终”选项。

    【讨论】:

    • 我在 info.plist 文件中设置了 NSLocationWhenInUseUsageDescription 和 NSLocationAlwaysAndWhenInUseUsageDescription。并且位置权限也一如既往地设置。
    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    相关资源
    最近更新 更多