it-swarm.com.ru

Определить, если приложение в фоновом режиме или на переднем плане в быстром

есть ли способ узнать состояние моего приложения, если оно находится в фоновом режиме или на переднем плане. Спасибо 

36
Mohammed Aboelwafa

[UIApplication sharedApplication].applicationState вернет текущее состояние приложений,

  • UIApplicationStateActive 
  • UIApplicationStateInactive
  • UIApplicationStateBackground

или если вы хотите получить доступ через уведомление см. 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 :
             // backgound
             break
        case .active :
         // foreground
        break
        default:
            break
        }

Объективный C

 UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
      // background
 }else if (state == UIApplicationStateActive)
{
    // foreground
}
89
Anbu.Karthik

Swift 3

  let state: UIApplicationState = UIApplication.shared.applicationState

            if state == .background {

                // background
            }
            else if state == .active {

                // foreground
            }
13
dimo hamdy

Swift 4

let state = UIApplication.shared.applicationState
        if state == .background {
            print("App in Background")
        }else if state == .active {
            print("App in Foreground or Active")
        }
4
Ashu

вы можете добавить логическое значение, когда приложение вводится в фоновом режиме или вводится на переднем плане. У вас есть эта информация с помощью делегата приложения.

Согласно документации Apple, возможно, вы также можете использовать свойство mainWindow вашего Приложения или свойство активного состояния приложения.

NSApplication документация

Обсуждение Значение в этом свойстве равно nil, когда раскадровка приложения или файл пера еще не завершена загрузка. Также это может быть ноль, когда приложение неактивно или скрыто.

1
Atlandu

Если кто-то хочет это в 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
    }

для 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
}
1
Hamid Shahsavari