@Ting and I have been testing how iOS handles downloads from ArcGIS Online (AGOL) vs. ArcGIS Enterprise using URLSessionDownloadTask.cancelByProducingResumeData().
On iOS, for downloads to resume properly after being paused or interrupted, the server needs to:
Use an HTTP/HTTPS GET request
Include ETag or Last-Modified headers
And most importantly, support byte-range requests (shown by the Accept-Ranges: bytes header)
AGOL includes all three headers — ETag, Last-Modified, and Accept-Ranges — so downloads can pause and resume just fine.
On Enterprise, the GET request response only includes ETag and doesn’t return Accept-Ranges, so iOS can’t resume partial downloads.
It would be great if ArcGIS Enterprise could add support for Accept-Ranges: bytes in its responses. That change would let iOS apps resume downloads just like they do with AGOL — a big help for large datasets and users on unstable connections. It would be really nice to see this implemented soon to improve the download experience on iOS, and it’s probably not a big change to make on the server side.
Thank you very much!