Недавно я отправился в мир swift и хотел бы знать следующее: Как получить данные из базы данных, когда приложение закрыто? Например, с помощью этого кода и соответствующего синтаксического анализа класса я получаю данные для входа в систему в моем приложении, изменяя некоторый код, если я могу получить что-то еще из своей базы данных, до сих пор это работает идеально. Но сегодня мне нужно иметь возможность запускать код, похожий на тот, который я показываю, но когда приложение закрыто и с полученными данными показывает уведомление. Любая помощь, пожалуйста?
@IBAction func inicioSeccion(_ sender: Any) {
username = usernameText.text
password = passwordText.text
if(username!.isEmpty || password!.isEmpty){
showToas(message: "Please check the empty fields")
}else{
self.forData { (data) in
let parser = XMLParser(data: data)
let parserDelegate = ParserDelegate()
parser.delegate = parserDelegate
guard
parser.parse(),
let result:[UserXml] = parserDelegate.Users
else { return }
if result.count == 1
{
self.idUser = result[0].idUser
self.nombreUser = result[0].nombreUsuario
self.saveData()
DispatchQueue.main.async {
self.performSegue(withIdentifier: "welcomeConexion", sender: self)
}
}
}
}
}
func forData(completion: @escaping (Data) -> ()) {
let is_SoapMessage1 = String(format: "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><WSLoginUser xmlns='http://tempuri.org/'><username>%@</username><password>%@</password></WSLoginUser></soap:Body></soap:Envelope>",username!,password!)
//showToas(message: "\(username!)"+" "+"\(password!)")
let is_URL1: String = "http://10.0.0.160/WebService.asmx"
let lobj_Request = NSMutableURLRequest(url: NSURL(string: is_URL1)! as URL)
let session = URLSession.shared
lobj_Request.httpMethod = "POST"
lobj_Request.httpBody = is_SoapMessage1.data(using: String.Encoding.utf8)
lobj_Request.addValue("10.0.0.160", forHTTPHeaderField: "Host")
lobj_Request.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
lobj_Request.addValue(String(is_SoapMessage1.count), forHTTPHeaderField: "Content-Length")
//lobj_Request.addValue("223", forHTTPHeaderField: "Content-Length")
lobj_Request.addValue("http://tempuri.org/WSLoginUser", forHTTPHeaderField: "SOAPAction")
let task = session.dataTask(with: lobj_Request as URLRequest, completionHandler: {data, response, error -> Void in
//print("Response: \(response!)")
var strData: String = String(data: data!, encoding: .ascii)!
strData = strData.replacingOccurrences(of: "\r", with: "\n")
if let data = data, error == nil {
completion(data)
} else {
print("error=\(error!.localizedDescription)")
}
})
task.resume()
}