Determine if an app is running in the foreground when a notification is received on iOS
Asked Answered
S

3

37

I would like to find a way to see what app is running in foreground or if the home screen is displayed when a local notification from my app show up. For example i want to have different actions if there is in homescreen or in someone else app. I tried to use processed and pid but the pid is generated hen the app starts and not the last time the app is used. Any idea? thanks

Selfrenunciation answered 27/12, 2011 at 10:27 Comment(0)
P
65

As described in the push notification documentation you can read [[UIApplication sharedApplication] applicationState] when you receive the notification to determine whether your app is in foreground, inactive (it's visible but a dialog like the WiFi chooser is in front) or in background.

Pragmatism answered 27/12, 2011 at 10:34 Comment(4)
i want to know if anither app is running in foreground like camera or ipod or notesSelfrenunciation
So, what part of my answer do you have trouble with? If you read [[UIApplication sharedApplication] applicationState] it tells you whether your app is foreground or not.Pragmatism
Yes. this is for my app. how I would now exactly what app was before mine?IF was Camera for example or an appstore app?Selfrenunciation
There is no way to get this information. You only know whether your app is in foreground or not.Pragmatism
E
21

Just to have a copy-paste code available for others:

if([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive)
{
    //App is in foreground. Act on it.
}
Erie answered 11/9, 2016 at 20:11 Comment(1)
p1us 0ne for the copy pasteMusicianship
S
19

Swift 5 version:

import UIKit
let isForeground = UIApplication.shared.applicationState == .active
Sheathbill answered 18/5, 2018 at 4:52 Comment(1)
It's probably worth noting you need import UIKit since it's not obvious where the identifier UIApplication comes from.Parry

© 2022 - 2024 — McMap. All rights reserved.