Я немного разбирался в этом, поэтому я хотел бы ошибиться, если кто-то знает что-то, чего я не знаю, но технически, нет документированного способа узнать разницу между блокировкой устройства.и отправка в фоновый режим.
Одна вещь, которую вы можете проверить, однако, это UIApplicationState
при переходе от переднего плана к фону.Блокировка устройства даст UIApplicationStateInactive
, а перемещение приложения на задний план - UIApplicationStateBackground
.Но, поскольку это поведение официально не задокументировано, оно может измениться в будущем.
Базовый пример:
- (void)applicationDidEnterBackground:(UIApplication *)application {
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
NSLog(@"Device state: %@", state);
switch (state) {
case UIApplicationStateActive:
/* ... */
break;
case UIApplicationStateInactive:
/* Device was/is locked */
break;
case UIApplicationStateBackground:
/* User pressed home button or opened another App (from an alert/email/etc) */
break;
}
}
UIApplicationState
- рабочие состояния приложения
typedef enum {
UIApplicationStateActive,
UIApplicationStateInactive,
UIApplicationStateBackground
}
UIApplicationState
Константы UIApplicationStateActive
- Приложение работает на переднем плане и в данный момент получает события.Доступно в iOS 4.0 и более поздних версиях.
UIApplicationStateInactive
- Приложение работает на переднем плане, но не получает события.Это может произойти в результате прерывания или из-за перехода приложения в фоновый режим или из него.
UIApplicationStateBackground
- Приложение работает в фоновом режиме.
Согласно Справочнику по протоколу UIApplicationDelegate :
applicationWillResignActive:
didEnterBackground:
// ...
willEnterForeground:
applicationDidBecomeActive:
- единственные методы, которые когда-либо вызывались в обеих ситуациях.
Согласно API от iOS 4.3 до iOS 5.0 Diff , это ЕДИНСТВЕННЫЕ изменения, касающиеся UIApplication
или UIApplicationDelegate
, поэтому я не смог найти, где они документировали какие-либо из этих изменений уведомлений:
UIApplication.h
Added -[UIApplication setNewsstandIconImage:]
Added UIApplication.userInterfaceLayoutDirection
Added UIApplicationDelegate.window
Added UIApplication(UINewsstand)
Added UIApplicationLaunchOptionsNewsstandDownloadsKey
Added UIRemoteNotificationTypeNewsstandContentAvailability
Added UIUserInterfaceLayoutDirection
Added UIUserInterfaceLayoutDirectionLeftToRight
Added UIUserInterfaceLayoutDirectionRightToLeft