Цель C: Как проверить, активно ли приложение в данный момент (то есть пользователь использует его)?

Я реализую APNS push для своего приложения со следующими формами поведения

1) Если приложение неактивно, то есть в фоновом режиме или еще не запущено:

Пользователь получит всплывающее сообщение и по щелчку приведет его/ее к третьей вкладке в приложении (см. код ниже)

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{

    self.tabController.selectedIndex = 3;

}

2) Если приложение запущено и в настоящее время активно

Никакое всплывающее предупреждение не будет отображаться, и количество новых уведомлений будет отображаться как номер на третьей вкладке

enter image description here

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

Ответы

Ответ 1

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if (application.applicationState == UIApplicationStateActive) {
        // update the tab bar item
    }
    else {
        self.tabController.selectedIndex = 3;
    }
}

Ответ 2

Мой ответ для новых современных посетителей...

Быстрая переменная. Проще говоря, это где-нибудь, где внешние классы проверяют активное состояние приложения.

var isApplicationActive:Bool {
    get {return UIApplication.sharedApplication().applicationState == .Active}
}

поэтому ваш код в swift будет

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
    if isApplicationActive {
        //Change badge number ...
    } else {

    }
}