Подтвердить что ты не робот

Необходимость уточнения относительно 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
}

С уважением, Сэм.

4b9b3361

Ответ 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 - приложение находится в фоновом режиме, но все еще работает. Например, воспроизведение музыки. Затем - это может занять некоторое время или нет (в зависимости от того, как вы работаете в фоновом режиме), но в какой-то момент ваше приложение будет убито. Вы увидите снимок приложения и значок между свернутыми приложениями, но сначала приложение будет запущено.