ios - NSURLSessions 和 HLS 视频缓存 - 部分下载无法删除
问题描述
我正在尝试在用户观看 HLS 视频流(非实时)时对其进行缓存。为此,我们设置了一个类似于苹果在此处推荐的 AvAssetDownloadTask:
这种方法效果很好,因为我们可以将下载任务中的 url 资产传递给同时下载和流式传输。
我们希望将此下载临时缓存到应用程序的视频下载部分,这几乎可以在 NSUrlSessionTask 委托中本地工作,除非我们要删除部分数据。
如果下载完成,我们会收到最终下载位置,并且可以添加过期时间或稍后手动删除文件。但是,如果下载仅部分完成,我无法找到删除部分下载视频的方法。
我希望取消任务并使任务无效可以清理部分下载,但似乎并非如此,上面的链接中还有更多苹果状态: In the case where a download is canceled, and there is no intention of resuming it, your app is responsible for deleting the portion of the asset already downloaded to a user’s device.
但是,没有任何关于如何实现这一点的建议。删除此部分下载似乎应该很容易访问,但尚未找到实现此目的的方法。
手动迭代视频下载目录似乎也不显示这些部分下载;但它们在我们的应用程序设置的主要 iOS 设置的“下载的视频”部分中可见。
想知道是否其他人已经解决了这个问题或有如何完成的建议。
解决方案
找到了答案,而不是暂停下载任务,一旦我们希望完成部分缓存下载,就需要取消它,然后会触发
- (void)URLSession:(NSURLSession *)session assetDownloadTask:(AVAssetDownloadTask *)assetDownloadTask didFinishDownloadingToURL:(NSURL *)location {
其中提供了最终 url。
推荐阅读
- c# - 如何模拟返回接口列表的方法
- highcharts - 当所有值都为零时,删除 highcharts 面积图下方的差距
- css - 将悬停时突出显示的菜单项更改为在 wordpress 上悬停时加下划线
- javascript - Vuejs2:使用对象作为道具时如何判断道具更新?
- python - wxpthon 和 matplotlib 的实时图形 gui 绘图
- react-native - Native Base 组件在 react native android 中显示空白页面
- javascript - 我可以在没有 Webpack 的情况下使用 Angular 6 吗?
- jwt - 如何从graphql突变返回令牌
- c++ - 返回变量 c++ 占用的内存位置大小的函数
- python - 如何使用 Gabor 滤波器从图像中提取特征?