Patricia Cartwright
Patricia Cartwright

Reputation: 43

Termination of an app running in the background

I am currently developing an app that will need to terminate after running in the background for more than five minutes. In order to do this, I will have to have a timer running in the background after the the Home button has been pressed or in case of an interruptions such as an SMS or a telephone call, then, after five minutes the applicationWillTerminate method will be called. My first question is should I put the applicationWillTerminate in the applicationWillResignActive method or in the applicationDidEnterBackground method? My second question is since this is an app with more that one view, Should I write these things in the AppDelegate class or elsewhere? Thank you for your response.

Upvotes: 0

Views: 141

Answers (2)

A'sa Dickens
A'sa Dickens

Reputation: 2085

This is pretty ghetto, but what you can do is make your app crash when you want it to exit, and it will close automatically, granted that's not closing the app, but there's no real harm in it as long as you are in control of how it crashes try to go for a bad access error, aka trying to access something that has been deallocated

as for running a timer in the background, i don't know per say if you can do that, but as an alternative you can save the time when they leave the app aka the app goes into the background and then you can have all the events return to your app of the view controller that is first responder, and each UIEvent has a time stamp, and regardless of which event it is you can compare the time stamps and see if it's greater than 5 minutes

Regardless i don't suggest any of the above, but that is the best answer i can come up with for your question

the code for receiving events out side of your app

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

will start the event tracking and the call back is:

- (void)remoteControlReceivedWithEvent:(UIEvent *)event { }

but you have to remember to

[self becomeFirstResponder];

this tells the device which view controller to go to for the event tracking, oh and don't forget to resign first responder, and endReceivingRemotecontrolEvents

Upvotes: 0

Bruno Koga
Bruno Koga

Reputation: 3874

1) You can't force your app to finish programatically.

2) You should never call these AppDelegate methods by yourself. They're meant to be called only by the system.

Reference: UIApplicationDelegate Protocol Reference.

Upvotes: 2

Related Questions