Background tasks don't behave as you want it to, there's no such thing as deterministic background scheduling in iOS, it simply just does not exist.
The time you specify to run is not an absolute time, it is an earliest possible time, totally not the same thing.
The documentation says "The delay between the time you schedule a background task and when the system launches your app to run the task can be many hours."
That does not go far enough in explanation, not only can it be many hours later than you specified, the OS may not run the task at all, there are no guarentees it will get run.
If the user isn't regularly engaging with your app, then the OS will stop running the tasks.
This question comes up time and time and time again, people want to know how to regularly perform a task at repeating deterministic internals in the background, well you cannot, iOS just does not provide the ability to do that.
Topic:
App & System Services
SubTopic:
Core OS
Tags: