目标C:如何检查应用程序当前是否处于活动状态(即用户是否正在使用它)?

Zhe*_*hen 16 objective-c apple-push-notifications ios

我正在通过以下行为为我的应用程序实施APNS推送

1)如果应用程序未激活,即在后台或尚未启动:

用户将收到弹出消息,点击后会将他/她带到应用程序的第3个标签页(参见下面的代码)

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

    self.tabController.selectedIndex = 3;

}
Run Code Online (Sandbox Code Playgroud)

2)如果应用程序已启动且当前处于活动状态

将不会显示弹出警报,并且新通知的数量将在第3个选项卡上显示为数字

在此输入图像描述

我的问题是如何确定用户的应用程序是否处于活动状态?如何以及在何处实施检查以便我可以设置2种不同的行为?

Sta*_*glo 38

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


Hus*_*sam 5

我对新现代游客的回答......

Swift变量:简单地将其放在外部类的任何位置以检查app活动状态.

var isApplicationActive:Bool {
    get {return UIApplication.sharedApplication().applicationState == .Active}
}
Run Code Online (Sandbox Code Playgroud)

所以你的代码在swift中会是

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

    }
}
Run Code Online (Sandbox Code Playgroud)