func respondWithDataForRequest(loadingRequest:AVAssetResourceLoadingRequest) -> Bool {
let mimeType = self.response?.mimeType ?? ""
let contentType = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)
loadingRequest.contentInformationRequest?.isByteRangeAccessSupported = true
loadingRequest.contentInformationRequest?.contentType = contentType?.takeRetainedValue() as String?
// 崩溃位置 ---
loadingRequest.contentInformationRequest?.contentLength = (self.response?.expectedContentLength)!
var startOffset:Int64 = loadingRequest.dataRequest?.requestedOffset ?? 0
if loadingRequest.dataRequest?.currentOffset != 0 {
startOffset = loadingRequest.dataRequest?.currentOffset ?? 0
}
if Int64(data?.count ?? 0) < startOffset {
return false
}
let unreadBytes:Int64 = Int64(data?.count ?? 0) - (startOffset)
let numberOfBytesToRespondWidth:Int64 = min(Int64(loadingRequest.dataRequest?.requestedLength ?? 0), unreadBytes)
if let subdata = (data?.subdata(in: Int(startOffset)..<Int(startOffset + numberOfBytesToRespondWidth))) {
loadingRequest.dataRequest?.respond(with: subdata)
let endOffset:Int64 = startOffset + Int64(loadingRequest.dataRequest?.requestedLength ?? 0)
return Int64(data?.count ?? 0) >= endOffset
}
return false
}