I have a mobile app that automatically downloads user content from the Internet according to a schedule. Sometimes it might miss a scheduled update because the device wasn't connected to the Internet at the right time, or because it had the wrong kind of connection. (The app offers settings for what kind of connections to download from, e.g. Wi-Fi only.) When the device connects with the right kind of connection, my app gets notified about the network change, and performs any updates it missed while it was disconnected. It doesn't have to poll to find out about the network connection change.
The user can update the data immediately by clicking a button. When he does this, it ignores the network connection settings and performs the update if at all possible. The update still happens in the background, and it notifies the user of the result asynchronously. The question is, what if the device isn't connected to the Internet at the time? As I see it, there are four options:
- Ignore the manual update, and update the content at the scheduled time.
- Treat the manual update as a missed scheduled update, and update as soon as an acceptable network is connected.
- Update as soon as any network is connected. "Update now" means the user wants the content updated ASAP!
- (cop-out answer) Prompt the user and ask what he wants.
The fourth option is there because "ask the user" is always an option, but it's a bit of a weak option in this case: it means keeping the user there (e.g. with a modal progress bar) until we know whether the update has succeeded.
What behaviour will best match the user's expectation?