You can use BGTaskScheduler, especially BGProcessingTask to perform long running actions, including CoreBluetooth data transfer, but you can't have defined schedules for background tasks. They will be run by the system whenever it is appropriate to do so, and not being run is also a possibility. You may want to read about iOS Background Execution Limits before deciding to depend on background tasks. In any case, I am not sure how this will help. With Bluetooth state restoration, and for being woken up from suspended state there is indeed a ~10 second time limit, but that is per Bluetooth event, not for the whole task you are trying to do. If you need a minute to download the whole set of data from the device, you would not be doing that all at once anyways. The device will be writing the data in pieces, and as long as the subsequent writes to a notifying characteristic happens within the ~10 second limit, your app's time will be topped up. So, as long as you take less than 10 seconds to process each
Topic:
App & System Services
SubTopic:
Processes & Concurrency
Tags: