Inconsistent polling time issue

I have implemented IOS polling in my application which occasionally wakes up and checks for update(current polling time is 20 min). The implementation has been consistent with IOS guideline where i request for execution time, complete my task and close the background task well before the allocated time.
Exact polling time has been inconsistent but i can live with it as long as i’m getting execution time once every 1 hour or so.
However if the user is inactive for a day, i noticed polling stopped, and my application stopped receiving execution time.
I’m trying to understand if this has to do with MOE implementation or just the way IOS behaves. Has anyone implemented polling with similar frequency and tested it for extended period of time? any specific MOE things that i need to worry about to avoid penalty.