Перемещение загрузки IAP из кеша и использование файлов
Были проблемы с перемещением загрузки IAP (состоящей из нескольких видеофайлов mp4) из кеша в расположение файлового менеджера и с использованием файлов. Я использую этот код в SKDownload.finished: switch для перемещения файлов
guard let path2 = download.contentURL?.appendingPathComponent("Contents") else {
return
}
let path = path2.absoluteString
queue.finishTransaction(download.transaction)
let fileManager = FileManager.default
var files: NSArray!
do {
files = try fileManager.contentsOfDirectory(atPath: path) as NSArray
} catch let err as NSError {
print("Error finding zip URL", err.localizedDescription)
}
for file in files {
var pathDestination: NSString = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true)[0] as NSString
pathDestination = pathDestination.appendingPathComponent(file as! String) as NSString
userDefaults.set(pathDestination, forKey: "source")
do {
try fileManager.moveItem(atPath: path, toPath: pathDestination as String)
print("File", file, "Moved")
}catch let err as NSError {
print("Couldn't move file", err.localizedDescription)
}
}
}
Затем я вставляю VC, где воспроизводю видеофайлы (currentVideo var - это имя видеофайла)
let source = userDefaults.string(forKey: "source")!
let path2 = source + currentVideo + ".mp4"
player = AVPlayer(url: NSURL(fileURLWithPath: path2) as URL)
self.playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.gameview.frame
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspect
playerLayer.zPosition = -1
self.gameview.layer.addSublayer(playerLayer)
self.player.volume = 0.5
self.player.play()
Где я ошибаюсь в этом? Также, куда бы я поместил queue.finishTransaction(транзакцию)? Очевидно, что его нужно выполнить после завершения загрузки, но если я вставлю это в SKDownload.finished, это выходит за рамки SKpaymentQueue, поэтому «транзакция» не распознается. Я предполагаю, что queue.finishTransaction(download.transaction) только завершает транзакцию загрузки и не завершает транзакцию оплаты? или это так? Если вы также можете отредактировать код, чтобы он исключал загруженные файлы из резервных копий пользователей, вы получаете бонусные баллы :-)