I have an iPhone 5C with iOS 10, and I have several apps that are supposed to do things in the background – specifically I'm thinking of Google Photos, IFTTT, and Android Wear, although there are might be more that I haven't noticed yet – like FB Messenger, Allo, Duo, Skype, Life360, Hiya, etc…
For example, Google Photos is supposed to auto-backup my camera photos, IFTTT is supposed to perform actions on all newly created reminders and screenshots, and Android Wear is supposed to connect to my LG watch.
On my old Android phone, they just did their thing whether the app was running or not. On iPhone, apparently you have to open the apps, and just leave them running in the background for them to behave.
However, for each of the three I've listed, they seem to only work as expected for a limited time (no idea how much time), before they just stop working. For example, I'll add a reminder, take a photo, or take a screenshot, and the actions don't happen, even though IFTTT and Google Photos show that they are running if I flip through the open apps.
I select the IFTTT or Google Photos app the following day from the open apps list, and immediately the actions kick off. Same for my watch – it'll work for half a day or so, then suddenly refuses to connect until I switch to the Android Wear app on the phone, then it immediately connects.
Background App Refresh is enabled on all of these apps.
This question seems to indicate that these apps should work. If they weren't popular apps, I'd blame the apps themselves, but I doubt Google and IFTTT would leave this big a hole in their products.
Is there another setting I need to look at? Is there maybe some CPU or memory limitation that is blocking these apps that will be resolved with a newer more powerful phone?
Best Answer
Apps shown as "open" but that are not the foreground app are in the Suspended state (described below), with a couple of exceptions. So the apps you are seeing in the app switcher are generally not actively doing anything.
On a general level, these are the states an app can be in on iOS.
Background Execution is possible, as noted above, but only for specific use cases:
There is one other case, which is downloading in the background. This is a special case, though, because the app itself is still suspended and the download process is handed off to the system, in case the app has to be terminated by the system to reclaim resources.
Specifically with Google Photos, the app would need to be in the Active state, meaning phone unlocked and in the foreground, to find any photos that need to be uploaded. (After it has a list of them, it may be able to pass the actual uploads to the system for Background Execution, but I don't know if that's how it actually operates.)
For IFTTT, it likely has to be in the foreground to execute recipes that rely on iOS-specific things (i.e. Reminders). It might qualify for background execution under "Apps that keep users informed of their location at all times," but maybe not (even though it does have location-based triggers).
The Android Wear app should qualify under "Apps that receive regular updates" for background execution. Since it's working some of the time, it seems to be set up to do that. In the case of that app, I would guess it's being terminated by the system to reclaim resources.
A newer device with more resources would definitely not hurt the situation (especially for Android Wear, I bet), but some of this is just down to the way iOS operates in order to conserve system resources (and consequently, battery life).