Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run app for more than 10 minutes in background

I am trying to keep the iOS app in active state for more than 10 mins when it enters in background state.

How can I implement this.

like image 975
user968597 Avatar asked Mar 16 '12 13:03

user968597


People also ask

How long iOS app can run in background?

Tasks are under a strict time limit, and typically get about 600 seconds (10 minutes) of processing time after an application has moved to the background on iOS 6, and less than 10 minutes on iOS 7+.

Does background fetch work when app is terminated?

The Background Fetching will NOT happen in your app after the user has killed it in the multitasking UI. This is by design.


2 Answers

See "Background Execution" section of the iPhoneAppProgrammingGuide. In short, your app must be one of these types:

  • Apps that play audible content to the user while in the background, such as a music player app
  • Apps that keep users informed of their location at all times, such as a navigation app
  • Apps that support Voice over Internet Protocol (VoIP)
  • Newsstand apps that need to download and process new content
  • Apps that receive regular updates from external accessories

And you must add to the Info.plist as follows: Add the UIBackgroundModes key to your Info.plist file and set its value to an array containing one or more of the following strings:

  • audio—The app plays audible content to the user while in the background. (This content includes streaming audio or video content using AirPlay.)
  • location—The app keeps users informed of their location, even while it is running in the background.
  • voip—The app provides the ability for the user to make phone calls using an Internet connection.
  • newsstand-content—The app is aNewsstand app that downloads and processesmagazine or newspaper content in the background.
  • external-accessory—The app works with a hardware accessory that needs to deliver updates on a regular schedule through the External Accessory framework.
  • bluetooth-central—The app works with a Bluetooth accessory that needs to deliver updates on a regular schedule through the CoreBluetooth framework

Note that part of the review process will be checking to make sure that your app does what it says it's doing with regard to background processing.

like image 156
Brian Cooley Avatar answered Sep 21 '22 16:09

Brian Cooley


Here's what I've done using beginBackgroundTaskWithExpirationHandler.

  • Write a method that starts a background task.
  • Inside that background task, run a NSTimer with a scheduled (non repeating) time that is under 10 minutes. For the purposes of my situation I was using 5 minutes.
  • Once the NStimer's selector fires, end the background task and then instantly call the method that you wrote earlier to start off another background task.
  • If you want to schedule methods to run at specific times, you will have to check for them in the background task.

This solution isn't really ideal and is still power hungry but will do what you want.

Edit: Since iOS7, I suggest you read this excellent post. Note that this article was last updated in 2013 and is probably irrelevant now.

like image 42
ingh.am Avatar answered Sep 19 '22 16:09

ingh.am