Hallo,
ich schreibe an einer simplen App, die mir Ravencore HAA HomeKit Devices anzeigen soll und ob deren Setup Webseite erreichbar ist oder nicht. Ravencore HAA Devices können in einen Setup Modus versetzt werden, in dem man dann z.B. die WiFi Einstellungen verändern kann, oder die Konfiguration des Gerätes im allgemeinen.
Ich habe derzeit diesen Code am laufen:
Alles anzeigen
Die Daten werden also in CoreData gespeichert. Problem ist allerdings, das die CPU Last im Simulator bei 120-150% liegt und dadurch die App nicht wirklich bedienbar ist, solange die Überprüfung auf Erreichbarkeit läuft.
Ich suche nach einer einfacheren Möglichkeit zu prüfen ob die Seite nicht erreichbar ist, als die meine, die nicht die CPU auslastet. Ich möchte die Funktion alle 10-15 Sekunden laufen lassen.
Wäre toll wenn mir jemand einen Tipp geben könnte.
Danke.
ich schreibe an einer simplen App, die mir Ravencore HAA HomeKit Devices anzeigen soll und ob deren Setup Webseite erreichbar ist oder nicht. Ravencore HAA Devices können in einen Setup Modus versetzt werden, in dem man dann z.B. die WiFi Einstellungen verändern kann, oder die Konfiguration des Gerätes im allgemeinen.
Ich habe derzeit diesen Code am laufen:
Quellcode
- func checkURL(hostname:String, ipadress:String) {
- let dataURL = "http://\(ipadress)"
- let request = URLRequest(url: URL(string: dataURL)!)
- URLSession.shared.dataTask(with: request) { (data, response, error) in
- // Check if the response has an error
- var filteredDevice:[NSManagedObject] = []
- let request = Device.fetchRequest() as NSFetchRequest<Device>
- let predicate = NSPredicate(format: "hostname == %@", hostname)
- request.predicate = predicate
- do {
- filteredDevice = try self.managedObjectContext.fetch(request)
- } catch {
- print(error)
- }
- if error != nil{
- filteredDevice.first?.setValue(false, forKey: "reachable")
- do {
- try self.managedObjectContext.save()
- } catch {
- print(error)
- }
- return
- }
- if let httpResponse = response as? HTTPURLResponse{
- if httpResponse.statusCode == 200 {
- filteredDevice.first?.setValue(true, forKey: "reachable")
- } else {
- filteredDevice.first?.setValue(false, forKey: "reachable")
- }
- print("HTTP Status: \(httpResponse.statusCode)")
- }
- do {
- try self.managedObjectContext.save()
- } catch {
- print(error)
- }
- // Get data success
- }.resume()
- }
Ich suche nach einer einfacheren Möglichkeit zu prüfen ob die Seite nicht erreichbar ist, als die meine, die nicht die CPU auslastet. Ich möchte die Funktion alle 10-15 Sekunden laufen lassen.
Wäre toll wenn mir jemand einen Tipp geben könnte.
Danke.