【问题标题】:Application State using locationManager使用 locationManager 的应用程序状态
【发布时间】:2015-10-09 01:17:53
【问题描述】:

对不起,如果这个问题太基本了,但我卡住了。

场景:

我的应用使用 startMonitoringSignificantLocationChanges 使用后台和暂停的 locationUpdates。 在我的 AppDelegate 中有:

    if let options = launchOptions {
        locationKey = options[UIApplicationLaunchOptionsLocationKey] as! Bool
    }

所以当位置管理器启动应用时,我的 locationKey = true。

我希望在应用程序中使用 locationKey 来区分位置管理器启动或用户启动。

问题是:

当位置管理器启动应用程序时,行为与用户启动应用程序时完全一样,我的意思是,所有视图(来自启动过程)都被实例化,但应用程序仍然“关闭”。

当我点击打开应用程序时,“like”已经打开,所以我无法验证我的 locationKey,因为它始终为 true,并且 AppDelegate (didFinishLaunchingWithOptions) 不会再次触发,然后很难弄清楚如何以不同的方式、用户和位置处理启动。

我的问题是,我如何确定应用程序是按位置启动的,以及当用户真正打开应用程序时,我会以正常方式“恢复”它?

谢谢,如果不清楚,请见谅

【问题讨论】:

    标签: ios swift2 core-location cllocationmanager


    【解决方案1】:

    您能否更清楚地了解您对应用的期望行为?

    应用永远不会按位置启动:

    一旦用户启动应用程序(触发 didFinishLaunchingWithOptions), 应用可以进入后台模式(也就是被挂起)并且可以做一些工作(比如更新位置,完成一些任务,或者将未完成的下载委托给系统以便然后可以完成)或者被杀死。

    当用户返回应用程序时,应用程序处于后台并切换到前台模式,或者它已被终止,并且 didFinishLaunchingWithOptions 将再次被调用以完全重新启动应用程序。

    【讨论】:

    • 应用程序是由 locationmanager 启动的,在这种情况下不是由用户启动的。它在被杀死时运行,但内部行为和实例的行为与用户启动时相同,这是我的“问题”
    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2014-07-18
    相关资源
    最近更新 更多