ios URLSessionDataTask 使用数据恢复
ios URLSessionDataTask use resume with Data
我正在使用 URLSessionDataTask
下载视频并播放它们(我需要缓存所以我正在使用
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)
手动处理数据并提供给AVAssetResourceLoader
)。
为了进行磁盘缓存,我必须将下载的数据保存到磁盘(在终止应用程序时),以便用户再次打开应用程序时我可以继续下载数据。
我注意到它没有类似 downloadTask(withResumeData:)
的构造函数(URLSessionDownloadTask
的构造函数,它的想法几乎相同,但它没有 func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)
函数:D)。
现在我怎样才能将这两者结合起来?
谢谢你,抱歉这么久 post
您应该在请求中使用 Range
header。但是只有当服务器通过 Accept-Ranges
响应 header 通知您它接受范围请求时,您才可以使用它。
所以,如果服务器支持从偏移加载你需要在创建URLRequest
时将下载的部分偏移添加为header
有关详细信息,请参阅 HTTP RFC 2616 中的 Range header specification。
我正在使用 URLSessionDataTask
下载视频并播放它们(我需要缓存所以我正在使用
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)
手动处理数据并提供给AVAssetResourceLoader
)。
为了进行磁盘缓存,我必须将下载的数据保存到磁盘(在终止应用程序时),以便用户再次打开应用程序时我可以继续下载数据。
我注意到它没有类似 downloadTask(withResumeData:)
的构造函数(URLSessionDownloadTask
的构造函数,它的想法几乎相同,但它没有 func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)
函数:D)。
现在我怎样才能将这两者结合起来?
谢谢你,抱歉这么久 post
您应该在请求中使用 Range
header。但是只有当服务器通过 Accept-Ranges
响应 header 通知您它接受范围请求时,您才可以使用它。
所以,如果服务器支持从偏移加载你需要在创建URLRequest
有关详细信息,请参阅 HTTP RFC 2616 中的 Range header specification。