Когда я запускаю приложение, я хотел бы получить приложение active , которое работает нормально - это взаимодействие пользователя. Во-вторых, мне бы хотелось, чтобы в background приложение проверяло, есть ли процесс, связанный со старыми видео, ранее добавленными пользователем и не обработанными.
Для этого я использую текущий активный контроллер ( self ) и синглтон ( sharedInstance ).
Моя проблема в том, что адрес себя, активный вид, берет адрес одиночного, когда я пытаюсь загрузить видео в «активном режиме», я не понимаю, почему ...
Например, когда я пользуюсь приложением в обычном режиме, адресом является Печать описания себя: 0x155d5b3a0
Когда я нахожусь в функции urlSession (URLSession, didFinishDownloadingTo location :), мой адрес совпадает с адресом одиночного 0x155e3e890
Основной класс:
@objcMembers class ViewControllerCamBox: UIViewController,URLSessionDelegate,URLSessionDownloadDelegate,FormViewViewControllerDelegate {
static let sharedInstance = ViewControllerCamBox()
...
}
func stopVideo
{
...
self.url = fileUrls![0]
self.downloadVideo(urlStr: self.url)
...
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, did
WriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
if totalBytesExpectedToWrite > 0 {
if let onProgress = onProgress {
calculateProgress(session: session, completionHandler: onProgress)
}
let progress = Float(totalBytesWritten) / Float(totalBytesExpectedToWrite)
DispatchQueue.main.async {
if (self.progressLabel != nil && self.progressBar != nil)
{
self.progressBar.isHidden = false
self.progressBar.progress = Double(progress)
self.progressLabel.text = "Téléchargement en cours..."
self.progressLabel.isHidden = false
}
}
debugPrint("Progress \(downloadTask) \(progress)")
}
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
debugPrint("Download finished: \(location)")
let nameVideo = self.code_prospect_unique + "_video.MOV"
//MY PROBLEM => self has the sharedInstance address and not the self address of the current active viewcontroller.
...
}
func downloadVideo(urlStr:String)
{
//self.id = get id from query
let url = URL(string: urlStr)!
self.dataTask = self.activate().downloadTask(with: url)
self.dataTask?.resume()
}
Функция для запуска, чтобы проверить, есть ли видео для отправки:
func checkGeneral()
{
//check download = 0e
let query = "SELECT ID, MAIL, URL, CODE_PROSPECT_UNIQUE FROM VIDEO WHERE DOWNLOAD = 0"
LocalDatabase.sharedInstance.methodToSelectData(query, completion: { (result) in
if (result.count > 0)
{
let viewControllerCamBox = ViewControllerCamBox.sharedInstance
if let resultFound = result[0] as? [String: Any] {
guard !resultFound.keys.contains("ErrorMessage")
else {return}
let id = resultFound["ID"] as! NSNumber
let url = resultFound["URL"] as! String
let code_prospect_unique = resultFound["CODE_PROSPECT_UNIQUE"] as! String
viewControllerCamBox.id = id.stringValue
viewControllerCamBox.code_prospect_unique = code_prospect_unique
viewControllerCamBox.downloadVideo(urlStr: url)
print("Data selected successfully: code prospect unique:\(String(describing: viewControllerCamBox.code_prospect_unique))")
}
//each rows send
//check resized = 0
//check upload = 0
}
else
{
print("Fail while data selection: code prospect unique:\(self.code_prospect_unique)")
}
})
}
Есть что-то плохое?
Я просто хотел бы использовать синглтон в фоновом режиме и активный вид для обычного использования для пользователя.
Заранее спасибо.