Как определить, что приложение находится в активном или неактивном состоянии IOS?

Мне нужно знать, когда приложение находится на переднем плане, в активном или неактивном состоянии?

Если мое приложение находится в неактивном состоянии, мне нужно запустить протокол выхода из системы и уничтожить сеанс текущего пользователя,

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

Есть ли метод appDelegate, который сообщает мне, что приложение находится в неактивном состоянии, любой пример кода мне очень поможет.

Если нужно работать с "NSNotificationCenter", в какой класс я могу добавить код и кто будет наблюдателем.

2 ответа

Для проверки состояния вы можете сделать что-то вроде:

[[UIApplication sharedApplication] applicationState]==UIApplicationStateInactive

или же

[[UIApplication sharedApplication] applicationState]==UIApplicationStateActive

Если вы хотите получать уведомления, вы можете сделать:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(yourselector:)
                                                 name:UIApplicationDidBecomeActiveNotification object:nil];

или же

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(yourselector:)
                                                 name:UIApplicationDidEnterBackgroundNotification object:nil];

Вы также можете делать другие уведомления (из 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

Если вы хотите использовать делегат приложения, вы можете использовать:

- (void)applicationDidEnterBackground:(UIApplication *)application {}

или же

- (void)applicationDidBecomeActive:(UIApplication *)application {}

Пожалуйста, обратитесь этот Apple Doc: жизненный цикл приложения

applicationDidBecomeActive:—Позволяет вашему приложению знать, что оно должно стать приложением переднего плана. Используйте этот метод для любой последней подготовки.

applicationWillResignActive: - позволяет узнать, что ваше приложение перестает быть приложением переднего плана. Используйте этот метод, чтобы перевести ваше приложение в состояние покоя.

applicationWillEnterForeground: - позволяет узнать, что ваше приложение выходит из фона и возвращается на передний план, но оно еще не активно.

applicationWillTerminate: - позволяет узнать, что ваше приложение закрывается. Этот метод не вызывается, если ваше приложение приостановлено

Другие вопросы по тегам