Ich habe einige Probleme mit dem Fall, wenn es eine sehr langsame Internetverbindung ist. Lassen Sie mich zuerst erklären. Ich kann behandeln, wenn das Gerät nicht mit dem Internet und Funktion verbunden ist, die Griffe das heißt:Überprüfen Sie auf langsam (nicht nur, wenn Gerät verbunden ist) Internetverbindung in Swift iOS 9.3
public class Reachability
{
class func isConnectedToNetwork() -> Bool
{
var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, UnsafePointer($0))
}
var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: 0)
if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {
return false
}
let isReachable = flags == .Reachable
let needsConnection = flags == .ConnectionRequired
return isReachable && !needsConnection
}
Also, wenn das Gerät mit dem Internet verbunden ist, und die Verbindung ist schnell und stabil, funktioniert alles einwandfrei. Wenn das Gerät nicht mit dem Internet verbunden ist, erhalte ich eine Warnung, dass ich verbunden sein muss und dass das auch gehandhabt wird.
Problem ist, wenn ich verbunden bin und Internet ist sehr langsam wie 16 kbps. Viele Dinge werden über Alamofire abgefragt, und es dauert Jahre, um diese Geschwindigkeit herunterzuladen. Das würde mich auch nicht stören, wenn es meine App nicht stoppen würde und es schließlich zum Absturz bringen würde.
Ich habe diese Funktion versucht:
class func isInternetActive(input: String, completion: (result: String) -> Void)
{
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
Alamofire.request(.GET, "http://www.google.hr").response
{ response in
if response.3 != nil
{
print("NOK")
completion(result: "NOK")
}
print("OK")
completion(result: "OK")
}
})
}
Auch Alamofire Ich verwende Daten für meine Social-Media-Viewcontrollers zu holen und für Twitter Ich bin mit Stoff.
Ich möchte so etwas wie: Versuchen Sie, Daten zu holen. Wenn Sie sie nicht innerhalb von 3-4 Sekunden abrufen können. dann hör auf zu fragen. Also, wenn Sie das Bild nicht innerhalb weniger Sekunden herunterladen können, lassen Sie dieses ImageView weiß oder leer, so wie wenn ich nicht mit dem Internet verbunden bin.
Werfen Sie einen Blick hier: http://StackOverflow.com/Questions/33865843/Swift-2-1-Alamofire-Timeout-Method und http://StackOverflow.com/Questions/36626075/Handle-Timeout-mit- alamofire – Feldur
Nein, diese Dinge überprüft nur die Verbindung. In meinem Fall ist die Verbindung in Ordnung, aber die Verbindung ist langsam – Stjepan