In a test device that's never been used for development, iOS Background Fetch works fine, continuing during the night.
But on two other devices, used for development, the fetches sometimes occur, but often don't, not even during the night.
Did anyone experience the same odd behaviour? Do fetches occur only when there's Wi-Fi available, or are there other factors I might be missing that influences fetch behaviour?
Turned out to be the following: I had data protection switched on which required the iPhone to be unlocked before my web credentials could be read.
Before doing the background fetch, I checked if the app was logged in by checking these credentials. This check failed because the keychain was locked.
The two iPhones for which background fetch worked only sporadically had passcode protection enabled, while the iPhone for which it always worked had passcode protection disabled.
I hope this helps other people. Here's a good article discussing my issue, which I found after I painfully sorted it out myself.