Q:

How to have an app infrequently search for major updates in the background?

This app communicates with a hardware accessory. I would like to have the app woken up once every 24 hours to search for firmware updates for that hardware. If an update is available, a notification will be sent to the notification center and the user can tap it to open the app and download the update.
None of the background modes discussed here seem appropriate. The closest is "background fetch" which is meant for an app that "regularly downloads and processes small amounts of content from the network."
The problems with this (all can be worked around) are:

No way to specify how often to wake up to check for updates
An expectation that if content is available, the app will download it immediately (instead, I just want to send the user a notification so they know an update is available)

So should I use background fetch and work around its limitations, is there a different background mode or API that would be better suited, or is this something an app shouldn't do?

A:

You can use background fetch for this, although you can't control if and when this happens (since the user can disable it). Instead of immediately downloading the firmware update, if you want to inform the user you can schedule a local notification to inform them.
Push notifications are a more appropriate solution for this problem though. Just send a push notification when a new firmware update is available.

