如何确定应用程序处于活动状态还是非活动状态ios?

Nas*_*sir 9 lifecycle objective-c user-inactivity ios

我需要知道应用程序何时处于前台,它处于活动状态还是非活动状态?

如果我的应用程序处于非活动状态,我需要触发注销协议并销毁当前用户的会话,

- (void)applicationWillResignActive:(UIApplication *)application
{
    NSLog(@"App is not active logout success");
}
Run Code Online (Sandbox Code Playgroud)

是否有任何appDelegate方法告诉我应用程序处于非活动状态,任何代码示例都会对我有所帮助.

如果需要使用"NSNotificationCenter",我可以在哪个类中添加代码以及谁将成为观察者.

Jos*_*fni 8

要测试状态,您可以执行以下操作:

[[UIApplication sharedApplication] applicationState]==UIApplicationStateInactive
Run Code Online (Sandbox Code Playgroud)

要么

[[UIApplication sharedApplication] applicationState]==UIApplicationStateActive
Run Code Online (Sandbox Code Playgroud)

如果您想收到通知,您可以这样做:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(yourselector:)
                                                 name:UIApplicationDidBecomeActiveNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

要么

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(yourselector:)
                                                 name:UIApplicationDidEnterBackgroundNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

您也可以进行其他通知(来自https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/):

UIApplicationDidBecomeActiveNotification UIApplicationDidChangeStatusBarFrameNotification UIApplicationDidChangeStatusBarOrientationNotification UIApplicationDidEnterBackgroundNotification时UIApplicationDidFinishLaunchingNotification UIApplicationDidReceiveMemoryWarningNotification UIApplicationProtectedDataDidBecomeAvailable UIApplicationProtectedDataWillBecomeUnavailable UIApplicationSignificantTimeChangeNotification UIApplicationUserDidTakeScreenshotNotification UIApplicationWillChangeStatusBarOrientationNotification UIApplicationWillChangeStatusBarFrameNotification UIApplicationWillEnterForegroundNotification UIApplicationWillResignActiveNotification UIApplicationWillTerminateNotification UIContentSizeCategoryDidChangeNotification

如果您想使用app delegate,可以使用:

- (void)applicationDidEnterBackground:(UIApplication *)application {}
Run Code Online (Sandbox Code Playgroud)

要么

- (void)applicationDidBecomeActive:(UIApplication *)application {}
Run Code Online (Sandbox Code Playgroud)