我目前正在使用 FairPlay 流实现离线流。因此,我正在使用AVAssetDownloadTask
.
我想向用户反馈开始下载的大小:
您确定要下载此流吗?下载需要 2.4GB,您目前还有 14GB 空间
我已经检查过类似的属性countOfBytesReceived
,countOfBytesExpectedToReceive
但这些不会返回正确的值。
let headRequest = NSMutableURLRequest(URL: asset.streamURL)
headRequest.HTTPMethod = "HEAD"
let sizeTask = NSURLSession.sharedSession().dataTaskWithRequest(headRequest) { (data, response, error) in
print("Expected size is \(response?.expectedContentLength)")
}.resume()
打印大小为 2464,最后大小为 3GB。
在下载过程中,我记录了上面的属性:
func URLSession(session: NSURLSession, assetDownloadTask: AVAssetDownloadTask, didLoadTimeRange timeRange: CMTimeRange, totalTimeRangesLoaded loadedTimeRanges: [NSValue], timeRangeExpectedToLoad: CMTimeRange) {
print("Downloaded \( convertFileSizeToMegabyte(Float(assetDownloadTask.countOfBytesReceived)))/\(convertFileSizeToMegabyte(Float(assetDownloadTask.countOfBytesExpectedToReceive))) MB")
}
但这些保持为零:
已下载 0.0/0.0 MB