Моя проблема решена путем очистки кэша, который сохраняется библиотекой VGPlayer
. Они предоставляют методы для очистки кэша и удаления файлов,
open func cleanAllCache() {
ioQueue.sync {
do {
let cacheDirectory = VGPlayerCacheManager.cacheDirectory()
try fileManager.removeItem(atPath: cacheDirectory)
} catch { }
}
}
open func cleanOldFiles(completion handler: (()->())? = nil) {
ioQueue.sync {
let cacheDirectory = VGPlayerCacheManager.cacheDirectory()
var (URLsToDelete, diskCacheSize, cachedFiles) = self.cachedFiles(atPath: cacheDirectory, onlyForCacheSize: false)
for fileURL in URLsToDelete {
do {
try fileManager.removeItem(at: fileURL)
} catch _ { }
}
if cacheConfig.maxCacheSize > 0 && diskCacheSize > cacheConfig.maxCacheSize {
let targetSize = cacheConfig.maxCacheSize / 2
let sortedFiles = cachedFiles.keysSortedByValue {
resourceValue1, resourceValue2 -> Bool in
if let date1 = resourceValue1.contentAccessDate,
let date2 = resourceValue2.contentAccessDate
{
return date1.compare(date2) == .orderedAscending
}
return true
}
for fileURL in sortedFiles {
let (_, cacheSize, _) = self.cachedFiles(atPath: fileURL.path, onlyForCacheSize: true)
diskCacheSize -= cacheSize
do {
try fileManager.removeItem(at: fileURL)
} catch { }
URLsToDelete.append(fileURL)
if diskCacheSize < targetSize {
break
}
}
}
DispatchQueue.main.async {
if URLsToDelete.count != 0 {
let cleanedHashes = URLsToDelete.map { $0.lastPathComponent }
NotificationCenter.default.post(name: .VGPlayerCacheManagerDidCleanCache, object: self, userInfo: [VGPlayerCacheManager.VGPlayerCleanCacheKey: cleanedHashes])
}
handler?()
}
}
}