如何判断我的应用程序在Swift中发布的状态

时间:2014-07-12 16:35:09

标签: ios swift

我希望根据我的应用是从后台启动,或者是否已启动并且它不在后台执行不同的操作。根据我的阅读,这可以在

中完成
func application(application: UIApplication!, willFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool

功能。我可以通过使用它来确定应用程序是否第一次启动:

if NSUserDefaults.standardUserDefaults().boolForKey("FirstLaunch") == true
    {
        NSUserDefaults.standardUserDefaults().setBool(false, forKey: "FirstLaunch")
        NSUserDefaults.standardUserDefaults().synchronize()
        println("false")
    }
    else
    {
        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "FirstLaunch")
        NSUserDefaults.standardUserDefaults().synchronize()
        println("true")
    }

但我无法确定应用程序处于活动状态的状态。

更新

我给了Drewag,因为你让我走上正轨。你在didFinishLaunchingWithOptions上是对的。

在测试了一些你的建议之后,它似乎是这样的:

如果打开了应用程序,无论它是否在后台,都会触发:

 applicationDidBecomeActive

所以一个人没有帮助。但是,当我启动应用程序并且它不在后台时,这似乎是这些火灾的唯一时间:

didFinishLaunchingWithOptions
willFinishLaunchingWithOptions

当应用程序在后台打开时,从这三种情况中的任何一种情况开始:

1。)双击主页按钮并选择应用程序窗口 2.)单击跳板上的应用程序图标 3.)从UILocalNotification中打开应用程序单击

这火了:

applicationWillEnterForeground

2 个答案:

答案 0 :(得分:3)

只是正确答案的图形:

iOS app lifecycle

from apple developer documentation

答案 1 :(得分:1)

这是application:didFinishLaunchingWithOptions:applicationDidBecomeActive:之间的区别。

application:didFinishLaunchingWithOptions:仅在应用程序启动时启动。

当应用从后台再次变为活动状态时,将调用

applicationDidBecomeActive:注意:首次启动时也会调用applicationDidBecomeActive:。如果您需要区分这两种情况,则必须使用application:didFinishLaunchingWithOptions:进行区分。您可以设置一个局部变量来跟踪它是否是第一次启动。