2013-12-13 2 views
7

Я хочу знать, когда мое приложение будет приостановлено? Состояние неактивности в течение определенного времени или прекращения пользователем. Мне нужно это, потому что мне нужно закрыть соединение веб-сокетом. Я хочу сохранить соединение живым, пока приложение находится в фоновом состоянии.iOS: Как узнать, когда приложение будет приостановлено?

Как это сделать?

Благодаря

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

+2

@ dandan78, который предназначен только для ввода фона, я хочу получить уведомление о том, когда приложение приостановлено. –

ответ

-1

В вашем файле AppDelegate.m этот метод будет вызываться, когда пользователь нажимает кнопку «домой», и приложение перейдет на задний план (здесь вы можете сохранить свое соединение в прямом эфире, но вы должны прочитать документацию на Apple относительно фоновых задач, потому что ваше соединение не может быть жить вечно, если приложение остается в фоновом режиме Есть и другие способы, чтобы сохранить приложение до даты, как обновление на нажимной уведомления и т.д.):.

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 
} 

и этот метод будет вызываться, когда приложение (полностью закрывается из многозадачности).

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 
} 

Вы можете обрабатывать свои соединения в рамках этих методов.

+0

хорошо, спасибо, что это работает. Я пробовал это, и он отлично работает! –

+9

«Приостановить» не «Фон». – Almo

+0

Могу я просто пояснить, так как я немного смущен этим, вызывает ли applicationWillTerminate, когда приложение находится в фоновом режиме в течение длительного времени, а iOS убивает приложение? У меня есть приложение, которое перезапускается после 10+ минут в фоновом режиме, если вы вернетесь к нему из фона. –

3

Вы также можете добавить уведомления наблюдателя

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(receiveSuspendNotification:) 
              name:UIApplicationWillResignActiveNotification 
              object:nil]; 

- (void) receiveSuspendNotification:(NSNotification*)notif 
{ 
} 

метод будет вызван и вы можете выполнять необходимые задачи.

+0

Зачем добавлять наблюдателя уведомления в центр уведомлений, когда вы можете использовать методы в ответе «NikosM.». Кажется немного избыточным добавлением другого вызова, не так ли. – Popeye

+1

Я считаю, что уведомления являются более чистым, если вы делаете что-то где-то, кроме делегата приложения. – zekel

+0

http://stackoverflow.com/users/980097/popeye, потому что он не работает. Начиная с 2017 года, это показывает, когда приложение перемещается в фоновом режиме, но не тогда, когда оно приостанавливается на несколько минут * после *, он остался в фоновом режиме. –

-2

Если ваше приложение не зарегистрировалось в фоновом режиме, то при получении UIApplicationDidEnterBackgroundNotification ваше приложение будет приостановлено в ОЗУ.

Смежные вопросы