2015-01-22 23 views
5

Chcę wiedzieć, kiedy aplikacja jest na pierwszym planie, jest w stanie aktywnym lub nieaktywnym?Jak określić aplikację w stanie aktywnym lub nieaktywnym?

Jeśli moja aplikacja jest w stanie nieaktywnym muszę odpalić Protokół Wyloguj i zniszczyć sesji bieżącego użytkownika,

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

Czy istnieje metoda appDelegate które mówią mi, że aplikacja jest w stanie nieaktywnym, każdy przykład kodu bardzo mi pomoże.

Jeśli potrzebujesz pracy z "NSNotificationCenter", w której klasie mogę dodać kod i kto będzie obserwatorem.

+0

Domyślni uczestnicy aplikacji w szablonie już zapewniają to, czego potrzebujesz. Przeczytaj komentarze w ramach funkcji. – Raptor

+0

@Tchami Jak to jest duplikatem, jeśli pytanie dotyczy iOS? –

Odpowiedz

7

celu zbadania stanu można zrobić coś takiego:

[[UIApplication sharedApplication] applicationState]==UIApplicationStateInactive 

lub

[[UIApplication sharedApplication] applicationState]==UIApplicationStateActive 

Jeśli chcesz być powiadamiany można zrobić:

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

lub

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

Można zrobić też inne powiadomienia (od 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

Jeśli chcesz korzystać z aplikacji delegata, można użyć:

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

lub

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

Hej Dzięki, rozwiązałeś mój problem w 50%, potrzebuję trochę więcej pomocy, potrzebuję czegoś, co jest przeciwne do 'UIApplicationDidBecomeActiveNotification' jak' UIApplicationDidBecomeInActiveNotification' lub 'UIApplicationWillBecomeINAfulNotification' – iNasir

+0

Zaktualizowałem swoją odpowiedź. Możesz użyć UIApplicationDidEnterBackgroundNotification. Aplikacja przechodzi przez tło, zanim staje się nieaktywna. –

+1

Świetna odpowiedź :) Zdecydowanie znalazłem kilka przydatnych rzeczy do codziennego użytku –

0

Proszę odnieść to Jabłko Doc: App Life Cycle

applicationDidBecomeActive: -Lets aplikacja wie, że ma zamiar stać się pierwszym planie app. Użyj tej metody do przygotowania w ostatniej chwili.

applicationWillResignActive: -Umawiaj, że Twoja aplikacja zmienia się z dala od aplikacji na pierwszym planie. Użyj tej metody, aby umieścić swoją aplikację w stanie spoczynku.

applicationWillEnterForeground: -Umówisz, że Twoja aplikacja wychodzi z tła i z powrotem na pierwszy plan, ale nie jest jeszcze aktywna.

applicationWillTerminate: -Umów, że Twoja aplikacja jest kończona. Ta metoda nie jest wywoływana, jeśli Twoja aplikacja została zawieszona.