Как использовать UIApplicationDidBecomeActiveNotification

Как использовать UIApplicationDidBecomeActiveNotification?

Должен ли я объявить его в viewDidLoad или viewWillAppear для перезагрузки данных при переходе с фона на передний план.

Вызывается ли UIApplicationDidBecomeActiveNotification только тогда, когда приложение приходит из фона на передний план?

Пожалуйста, помогите. Спасибо.

Ответ 1

Иногда бывает полезно иметь прослушиватель UIApplicationDidBecomeActiveNotification, когда вам нужно сделать некоторые действия в вашем контроллере просмотра при пробуждении от фона (в случае, если вы вошли в фоновый режим с помощью этого контроллера представления на экране). При таком пробуждении viewWillAppear не будет запущен!

Пример использования:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

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


- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];

}

- (void)someMethod
{
    <YOUR CODE AT WAKE UP FROM BACKGROUND>
}

Конечно, вы также можете реализовать все, что вам нужно, в жизненном цикле класса делегата приложения.

Ответ 2

Вы получаете это уведомление, если ваше приложение было прервано телефонным звонком или push-уведомлением. Как правило, если ваше приложение становится активным на экране после прерывания.

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

Используйте следующий код в viewDidLoad:

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

Используйте someMethod для обработки этого уведомления. И не забудьте удалить этот класс в качестве наблюдателя в dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self 
                                            name:UIApplicationDidBecomeActiveNotification
                                          object:nil];

Ответ 3

ОП спросил о системных уведомлениях, которые были запущены, когда приложение задумано, а затем снова перенаправлено. Уведомление, предназначенное для обработки этой ситуации, - это UIApplicationDidEnterBackgroundNotification и UIApplicationWillEnterForegroundNotification. Если вы хотите получать уведомления о более широком спектре ситуаций, например, когда у вас есть системное уведомление, совершите телефонный звонок, придет SMS, или вы поднимите панель управления, а также закрепитесь, тогда вы захотите UIApplicationWillResignActiveNotification и UIApplicationDidBecomeActiveNotification. Важно признать, что они разные, поскольку вам может потребоваться только отреагировать, если ваше приложение связано с фоном, а не для других сценариев.