Как определить, что приложение находится в активном или неактивном состоянии 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
: - позволяет узнать, что ваше приложение закрывается. Этот метод не вызывается, если ваше приложение приостановлено