web-dev-qa-db-ja.com

アプリケーションがswiftでバックグラウンドまたはフォアグラウンドにあるかどうかを検出します

バックグラウンドモードまたはフォアグラウンドである場合、アプリケーションの状態を知る方法はありますか。ありがとう

43

[UIApplication sharedApplication].applicationStateは、次のようなアプリケーションの現在の状態を返します。

  • UIApplicationStateActive
  • UIApplicationStateInactive
  • UIApplicationStateBackground

または、通知を使用してアクセスする場合は、 IApplicationDidBecomeActiveNotification を参照してください

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
}

目的C

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

Swift

  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

誰かが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

アプリケーションがバックグラウンドで入るとき、またはフォアグラウンドで入るときにブール値を追加できます。 Appデリゲートを使用して、この情報を取得します。

Appleのドキュメントによれば、アプリケーションのmainWindowプロパティまたはアプリのアクティブステータスプロパティを使用することもできます。

NSApplicationドキュメント

ディスカッションアプリのストーリーボードまたはnibファイルの読み込みがまだ完了していない場合、このプロパティの値はnilです。また、アプリが非アクティブまたは非表示の場合はゼロになる場合があります。

0
Atlandu