gpt4 book ai didi

ios - 已终止的应用程序无法通过 iBeacon 数据包唤醒

转载 作者:行者123 更新时间:2023-11-29 11:32:57 24 4
gpt4 key购买 nike

iOS能否在休眠状态下接收iBeacon数据包并唤醒应用?

我关闭了一个应用程序并重新启动,然后让手机处于 sleep 模式。设备重启时设备处于信标区域,我在重启后保持设备屏幕关闭。我的 iOS 应用没有唤醒,所以我怀疑它没有收到 iBeacon 数据包。

我检查了系统日志,发现 didEnterRegion 过程没有被调用。

如果应用程序被强制终止,应用程序唤醒是否有效?iOS 是否在重启和立即休眠状态下收到 iBeacon 数据包?

如果我打开屏幕,它会立即开始工作,但如果屏幕在重启后关闭,则它不会收到 iBeacon 数据包。

最佳答案

是的,iOS CoreLocation 将在区域进入或区域退出时启动您的应用程序,即使在 iOS 7.1.1 之后强制终止后也能正常工作。只有在 AppDelegate 的 didFinishLaunchingWithOptions 方法中设置了 CLLocationManagerDelegate 后,您才会得到适当的回调。如果您不在该方法中进行设置,则 CoreLocation 将不知道在应用启动后进行回调。

在应用重启时测试入口事件可能有点棘手,因此这里有一些避免陷阱的提示:

  1. 如果您的应用在上次运行时认为它在该区域“之外”,这一点至关重要。如果它上次运行时在该区域“内部”,则它不一定会得到另一个进入回调,因为它会认为它从未离开过。测试时,请绝对确保在终止应用程序或重启之前 收到 didExit 回调或 didDetermineState 回调表明它超出了区域.使用 NSLog 语句、本地通知或添加到应用屏幕的一些自定义 UI 指示器来验证这一点。

  2. 如果您重新启动 iOS 设备,CoreLocation 不会立即完全初始化 -- 我发现屏幕出现后需要 5 分钟才能收到任何回调。请务必等待足够长的时间。

  3. 一旦 CoreLocation 完全初始化,区域进入事件通常会在信标进入范围后的一秒内发生。然而,如果有限的蓝牙硬件辅助模式插槽在设备上都已满(如果您有一些其他信标应用程序已全部使用它们,通常会发生这种情况),则进入事件会回退到每 10 分钟或仅发生一次的软件扫描更多的。在这种情况下,进入事件可能需要那么长时间。确保在假设它不起作用之前等待足够长的时间。

关于ios - 已终止的应用程序无法通过 iBeacon 数据包唤醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51811297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com