【问题标题】:geofencing no longer relaunch app from terminated state in ios7?地理围栏不再从 ios7 中的终止状态重新启动应用程序?
【发布时间】:2026-02-05 22:10:01
【问题描述】:

我正在开发一个应用程序,它使用 ibeacon 来确定用户是否进入了特定区域。 现在我正在使用 CoreLocation 框架来实现这个基于地理围栏的功能。 我已经阅读了下面的文件。 https://developer.apple.com/library/mac/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html 苹果在其中说: “在 iOS 中,您在位置管理器中注册的区域在应用程序启动之间保持不变。如果在您的 iOS 应用程序未运行时发生区域交叉,系统会在后台自动将其唤醒(或重新启动),以便它可以处理事件。重新启动后,您之前配置的所有区域都将在您创建的任何位置管理器对象的受监视区域属性中可用。"

在 ios 7 之前我发现这是真的。 从 ios 7 开始,应用程序将从后台唤醒,但实际上不再可以从终止状态重新启动(从任务管理器中滑出,通过双击主页按钮显示)。 如果是因为苹果的政策,为什么苹果不更新上述官方文档? 所以我正在考虑一个 ios7 的错误,因为提醒应用程序(一个内置应用程序)也没有在 ios7 中重新启动,即使它在 ios6 中重新启动。 这个问题是由于 Apple 的政策造成的吗?还是ios7的bug? 我花了 2 天多的时间在谷歌上寻找解决方案。 对这个问题有什么想法吗?

【问题讨论】:

    标签: ios7 background ibeacon geofencing location-based


    【解决方案1】:

    文档已经过时了。这是 iOS7 中的预期行为。苹果制作了一段视频,明确讨论了这一变化。这个想法是,如果用户明确终止应用程序,用户不希望它运行。 See this thread.

    这有什么大不了的吗?用户真正这样做的频率如何?请记住,如果用户对您的应用感到恼火,他们也可以随时将其卸载。在 iOS6 中确实如此。

    【讨论】:

    • 感谢您的链接。也许,我应该同意你的看法。
    【解决方案2】:

    iOS 7.1 推翻了这一政策。也就是说,即使用户杀死了你的应用程序,iOS 仍然会在跨越该区域时启动你的应用程序。

    【讨论】:

    • 我在 iPhone 4S 上的 iOS 7.1.2 上看不到这个 - 如果我在任务切换器中终止应用程序,则应用程序不会重新启动,但如果操作系统因内存而终止应用程序压力我确实看到应用程序在进入区域时重新启动。