So, the double calling issue might have been happening because I was accidentally recreating URLSession when foregrounding as opposed to when re-launching.
I still can't fix the progress reporting, though. Even with resuming one or all tasks, lots of files just get skipped entirely. I tried using the .progress property of the URLSessionTask and that works well for backgrounding, but the Progress object does not get set up correctly after termination and relaunching, and since it's a read-only property, one can't seem to fix it manually.
Topic:
App & System Services
SubTopic:
General
Tags: