Strictly every 3 minutes you need to send to the server a request with information about the actions of the client. For example, did he press a specific button, and if he did, then send a request for receiving data. The state of the button must be monitored even if the user has turned off the application. (It may seem that there is no sense in keeping track of the button in the background - the button is just for the sake of example, the task will require monitoring the status even in the background)
I know that there are background modes , of which for me (as I understand it), either background fetch or executing finite-length tasks is suitable. But at once the amendment, in the background fetch I can set the query execution interval, setMinimumBackgroundFetchInterval , which does not guarantee strictly every 3 minutes . And the doubts about executing finite-length tasks are that I need to complete 2-3 requests (as I understood through NSTimer), and the task itself is not a long one.
What should be used? Maybe I should do this through NSURLSession at NSURLSession , but then in which direction should I dig?