2015-01-22 7 views
5

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

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

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

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

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

+0

По умолчанию делегаты приложения в шаблоне уже предоставляют то, что вам нужно. Прочитайте комментарии в рамках функций. – Raptor

+0

@Tchami Как это дубликат, если вопрос о iOS? –

ответ

7

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

[[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 {} 
+0

Привет, вы решили мою проблему на 50%, мне нужна дополнительная помощь, мне нужно что-то противоположное 'UIApplicationDidBecomeActiveNotification' как' UIApplicationDidBecomeInActiveNotification' или 'UIApplicationWillBecomeINActiveNotification' – iNasir

+0

Я обновил свой ответ. Вы можете использовать UIApplicationDidEnterBackgroundNotification. Приложение переходит через фон, прежде чем становится неактивным. –

+1

Отличный ответ :) Определенно нашел полезный материал для повседневного использования там –

0

Пожалуйста, обратитесь этот яблоко Doc: App Life Cycle

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

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

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

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