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

时间:2011-07-18 08:52:26

标签: objective-c ios apple-push-notifications

我正在使用以下行为为我的应用实施APNS推送

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

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

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

    self.tabController.selectedIndex = 3;

}

2)如果应用已启动并且当前有效

不会显示任何弹出式提醒,并且新通知的数量将在第3个标签上显示为数字

enter image description here

我的问题是如何判断用户的应用是否有效? 如何以及在何处实施检查以便我可以设置2种不同的行为?

2 个答案:

答案 0 :(得分:38)

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

答案 1 :(得分:5)

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

Swift变量:只需将其放在外部类别以检查应用程序活动状态。

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

所以swift中的代码将是

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

    }
}