Необходимость уточнения относительно UIApplicationState
Мне нужна ваша помощь в разъяснении моего понимания различных состояний приложения. Я собираюсь изложить свою интерпретацию, но, пожалуйста, не стесняйтесь меня исправлять.
1) Приложение запущено и запущено на переднем плане: state = UIApplicationStateActive
2) Пользователь нажимает кнопку "домой": state = UIApplicationStateBackground (????).
Debug stmt in my app shows it to be Active
3) Пользовательские двойные краны Домой и убивает приложение: state = UIApplicationStateInactive
Если значение для случая 2 действительно активно, тогда когда значение установлено в Background?
Мое приложение, основанное на местоположении, полагается на эти значения, чтобы предпринять соответствующие действия для пользователя.
if ( ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) ||
([UIApplication sharedApplication].applicationState == UIApplicationStateInactive) ) {
// isInBackground = YES;
// ------ UI not available
}
else {
// isInBackground = NO;
// ------ UI is available
}
С уважением,
Сэм.
Ответы
Ответ 1
Когда пользователь нажимает на значок приложения, приложение ненадолго переходит через переходное состояние UIApplicationStateInactive на своем пути к UIApplicationStateActive. Здесь приложение готово для отображения пользователю.
Когда приложение открыто, состояние приложения UIApplicationStateActive.
Если пользователь нажимает кнопку "домой" и возвращается на трамплин (домашний экран), или приложение прерывается чем-то, например, по телефону, состояние приложения переходит на UIApplicationStateInactive.
Для состояния приложения вашего приложения, которое станет UIApplicationStateBackground, ваше приложение должно будет зарегистрироваться для фонового процесса. Посмотрите, как использовать ваши службы определения местоположения.
Ответ 2
Документация Apple:
Ссылка на константу констант UIApplicationState
- Swift:
.Active
| Objective-C: UIApplicationStateActive
Приложение работает на переднем плане и в настоящее время принимает события.
Доступно в iOS 4.0 и более поздних версиях.
- Swift:
.Inactive
| Objective-C: UIApplicationStateInactive
Приложение работает на переднем плане, но не принимает события. Эта может произойти в результате прерывания или потому, что приложение переход на задний или задний фон.
Доступно в iOS 4.0 и более поздних версиях.
- Swift:
.Background
| Objective-C: UIApplicationStateBackground
Приложение работает в фоновом режиме.
Доступно в iOS 4.0 и более поздних версиях.
Ответ 3
Некоторые примеры:
UIApplicationStateActive
- приложение работает на переднем плане. Простой.
UIApplicationStateInactive
- Пример. Приложение было в фоновом режиме и открывается через push-уведомление (переход atm). Или центр управления/уведомления представлен над вашим приложением. Вы видите это, на переднем плане.
UIApplicationStateBackground
- приложение находится в фоновом режиме, но все еще работает. Например, воспроизведение музыки. Затем - это может занять некоторое время или нет (в зависимости от того, как вы работаете в фоновом режиме), но в какой-то момент ваше приложение будет убито. Вы увидите снимок приложения и значок между свернутыми приложениями, но сначала приложение будет запущено.