iPhone - Как отловить, если приложение закрыто (чтобы обновить значок значка)

Я устанавливаю:

- (void)applicationWillTerminate:(UIApplication *)application
{
    [UIApplication sharedApplication].applicationIconBadgeNumber = 1;
}

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

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

3 ответа

Решение

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

Из документов Apple:

Приостановлено Приложение находится в фоновом режиме, но не выполняет код. Система автоматически переводит приложения в это состояние и не уведомляет их об этом. Пока приложение приостановлено, оно остается в памяти, но не выполняет никакого кода. При возникновении нехватки памяти система может удалить приостановленные приложения без предварительного уведомления, чтобы освободить место для приложения переднего плана.

Также:

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

Бросить NSLog(@"App is being terminated."); в ваш -applicationWillTerminate: метод. Я думаю, вы обнаружите, что этот метод не вызывается, когда вы завершаете приложение, как вы.

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

Пожалуйста, просмотрите документацию по жизненному циклу приложения, как показано ниже

Также попробуйте и посмотрите, какой из перечисленных ниже методов вызывается

applicationWillResignActive:
applicationDidEnterBackground:
Другие вопросы по тегам