Detect if the application in background or foreground in swift

后端 未结 5 2277
醉梦人生
醉梦人生 2020-12-04 17:43

is there any way to know the state of my application if it is in background mode or in foreground . Thanks

相关标签:
5条回答
  • 2020-12-04 17:56

    Swift 4

    let state = UIApplication.shared.applicationState
            if state == .background {
                print("App in Background")
            }else if state == .active {
                print("App in Foreground or Active")
            }
    
    0 讨论(0)
  • 2020-12-04 17:56

    you can add a boolean when the application enter in background or enter in foreground. You have this information by using the App delegate.

    According the Apple documentation, maybe you can also use the mainWindow property of your Application or the active status property of the app.

    NSApplication documentation

    Discussion The value in this property is nil when the app’s storyboard or nib file has not yet finished loading. It might also be nil when the app is inactive or hidden.

    0 讨论(0)
  • 2020-12-04 18:07

    If somebody wants it in swift 3.0

    switch application.applicationState {
        case .active:
            //app is currently active, can update badges count here
            break
        case .inactive:
            //app is transitioning from background to foreground (user taps notification), do what you need when user taps here
            break
        case .background:
            //app is in background, if content-available key of your notification is set to 1, poll to your backend to retrieve data and update your interface here
            break
        default:
            break
        }
    

    for swift 4

    switch UIApplication.shared.applicationState {
    case .active:
        //app is currently active, can update badges count here
        break
    case .inactive:
        //app is transitioning from background to foreground (user taps notification), do what you need when user taps here
        break
    case .background:
        //app is in background, if content-available key of your notification is set to 1, poll to your backend to retrieve data and update your interface here
        break
    default:
        break
    }
    
    0 讨论(0)
  • 2020-12-04 18:08

    Swift 3

      let state: UIApplicationState = UIApplication.shared.applicationState
    
                if state == .background {
    
                    // background
                }
                else if state == .active {
    
                    // foreground
                }
    
    0 讨论(0)
  • 2020-12-04 18:14

    [UIApplication sharedApplication].applicationState will return current state of applications such as:

    • UIApplicationStateActive
    • UIApplicationStateInactive
    • UIApplicationStateBackground

    or if you want to access via notification see UIApplicationDidBecomeActiveNotification

    Swift 3+

    let state = UIApplication.shared.applicationState
    if state == .background || state == .inactive {
        // background
    } else if state == .active {
        // foreground
    }
    
    switch UIApplication.shared.applicationState {
        case .background, .inactive:
            // background
        case .active:
            // foreground
        default:
            break
    }
    

    Objective C

    UIApplicationState state = [[UIApplication sharedApplication] applicationState];
    if (state == UIApplicationStateBackground || state == UIApplicationStateInactive) {
        // background
    } else if (state == UIApplicationStateActive) {
        // foreground
    }
    
    0 讨论(0)
提交回复
热议问题