2

I know there have been questions regarding this but I haven't found the answer to this specific question. In both cases, i.e, user killing the app explicitly or system killing the app (after ~10 minutes of being in background), applicationWillTerminate is called. I want to be able to differentiate between the two. Is it possible in iOS7?

Shwethascar
  • 1,142
  • 9
  • 18
  • In iOS 4+ the applicationWillTerminate won't be called if you didn't set the UIApplicationExitsOnSuspend key. So for this question it is not possible. For reference : http://stackoverflow.com/questions/14291910/which-event-when-i-close-app-in-ios/14291944#14291944 – Midhun MP Apr 22 '14 at 19:02

2 Answers2

3

Nope, it's not possible to do in iOS 7.

AndrewShmig
  • 4,843
  • 6
  • 39
  • 68
1

The difference is that applicationDidEnterBackground will be called ~10 minutes before applicationWillTerminate if it is the system is killing the app. I guess you could use a timer

Zia
  • 14,622
  • 7
  • 40
  • 59
  • It could be that the user killed the app ~10 minutes after the app was in background too. I'm beginning to think there's no proper way to differentiate between the two. – Shwethascar Apr 22 '14 at 19:00
  • Yeah, I don't think there is one. But that should work about most of the time. Why do you need to know this anyways? – Zia Apr 22 '14 at 19:02
  • I need to handle the two cases differently. Mainly because of the alerts I need to show and handle other functions of the app accordingly. – Shwethascar Apr 22 '14 at 19:04
  • 2
    @Shwethascar: it is not possible in iOS 4+, please check my above comment. If you didn't set the `UIApplicationExitsOnSuspend` key the `applicationWillTerminate` won't be called. If you set that key, then the won't will be closed immediately if user press the home button. – Midhun MP Apr 22 '14 at 19:08
  • 1
    I don't think you should need to know the difference. If you do, it means that you are probably not following apple guidelines. – Zia Apr 22 '14 at 19:08
  • Just for clarification, for others too, if the app crashes (other than user killing it explicitly or system killing it after 10 mins), `applicationWillTerminate` doesn't get called? – Shwethascar Apr 22 '14 at 19:15
  • @MidhunMP That is true if I need the app to be killed as soon as it gets suspended (like pressing the home button). But I was referring to the case where after it is in the background the user kills it explicitly versus the system killing the app after 10 mins in the background. – Shwethascar Apr 22 '14 at 19:17
  • @Shwethascar: No way to distinguish that case. – Midhun MP Apr 22 '14 at 19:24