Перемещение загрузки 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) только завершает транзакцию загрузки и не завершает транзакцию оплаты? или это так? Если вы также можете отредактировать код, чтобы он исключал загруженные файлы из резервных копий пользователей, вы получаете бонусные баллы :-)

0 ответов

Другие вопросы по тегам