Background processing on iOS
My application runs on iOS (on iPad), using Qt. The application is being used for research so I need a way to transfer the generated log files from the iPad to a remote host on the network. I have a socket connection to the remote host, but I need to ensure that the transfer completes even when the app is suspended. I've started looking into setting up a background operation that will continue to run.
Is this the right way to go with current iOS builds? Is there a Qt way to implement this? A Google search seems to suggest that Qt does not support background operations in iOS.
AFAIK, Qt currently doesn't implement anything specific in that regard but you can still do it natively. You have to register the type of background activity that your application is going to implement.
Choose that correctly, otherwise you won't pass the app store review.
You can use the iOS background processing (https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html). Background fetch could also work but I do not know if it supports large amounts of data. Also, it does not have time gurantees.
@hamer Thanks! Background fetch won't work. I'm thinking I will need to use NSURLSession.
In the end, I decided to take a different approach. The only native iOS approach requires a web server running and an application backend to handle the file transfer. Since this application is designed to be deployed on-board a commercial aircraft and certification issues prevent the use of a web server.
For the iOS app, I will instead be using my existing socket connection to redirect logging calls to the logging host, which is a custom app already deployed, rather than writing the logs on the device and transferring after the fact.
Pretty complex setup to handle. Indeed, that's likely the best solution at this time.