2016-12-16 1 views
5

Ich versuche zu überprüfen, ob WiFi Assist aktiviert ist. Ich habe ein Problem, wenn ich mit meinem Access Point verbunden bin, um Daten zu erhalten, und wenn ich eine schlechte Verbindung habe, werden meine Mobilfunkdaten verwendet und es interferiert mit meinem Access Point. Gibt es eine Möglichkeit zu überprüfen, ob diese Option aktiviert ist?iOS Überprüfen Sie, ob WiFi Assist aktiviert ist

+0

Sie möchten überprüfen, Wifi aktiviert ist oder nicht richtig? –

+0

Nein, ich möchte prüfen, ob die Option unter Einstellungen -> Mobilfunk -> WiFi Assist aktiviert ist – Flipper

Antwort

2

Ok, ich denke ich kann ein wenig helfen. Sie müssen check SCNetworkReachabilityFlags, für was ich denke, wäre eine bestimmte Kombination von Flags. Ich habe keine Dokumentation gefunden, die unterstützt, welche Kombination von Flags anzeigen würde, dass Sie WI-FI und Cellular verwenden. Ich habe auch keine Dokumentation gefunden, mit der Sie diese Einstellung direkt überprüfen können.

Basierend auf früheren Erfahrungen hat Apple wahrscheinlich keine Möglichkeit, diese Einstellung direkt zu überprüfen.

Also ... Hier ist ein kleiner Code, um uns zu beginnen?

public enum InternetStatus { 
    case notReachable 
    case reachableViaWWAN 
    case reachableViaWiFi 
    case wifiAssist 
} 

Und eine Variable, die Sie in einer Erweiterung Ihrer Wahl definieren können. (Vielleicht URLSession?)

static public var internetStatus: InternetStatus { 

    var zeroAddress = sockaddr_in() 
    zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size) 
    zeroAddress.sin_family = sa_family_t(AF_INET) 

    guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, { 
     $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { 
      SCNetworkReachabilityCreateWithAddress(nil, $0) 
     } 
    }) else { 
     return .notReachable 
    } 

    var flags: SCNetworkReachabilityFlags = [] 

    if flags.contains(.connectionOnDemand) { 
     print("Connection On Demand") 
    } 

    if flags.contains(.connectionAutomatic) { 
     print("Connection Automatic") 
    } 

    if flags.contains(.connectionOnTraffic) { 
     print("Connection On Traffic") 
    } 

    if flags.contains(.connectionRequired) { 
     print("Connection Required") 
    } 

    if flags.contains(.interventionRequired) { 
     print("Intervention Required") 
    } 

    if flags.contains(.isDirect) { 
     print("isDirect") 
    } 

    if flags.contains(.isLocalAddress) { 
     print("Local Address") 
    } 

    if flags.contains(.isWWAN) { 
     print("WWAN") 
    } 

    if flags.contains(.reachable) { 
     print("Reachable") 
    } 

    if flags.contains(.transientConnection) { 
     print("Transient Connection") 
    } 


    if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) { 
     return .notReachable 
    } 

    if flags.contains(.reachable) == false { 
     // The target host is not reachable. 
     return .notReachable 
    } 
    else if flags.contains(.isWWAN) == true { 
     // WWAN connections are OK if the calling application is using the CFNetwork APIs. 
     return .reachableViaWWAN 
    } 
    else if flags.contains(.connectionRequired) == false { 
     // If the target host is reachable and no connection is required then we'll assume that you're on Wi-Fi... 
     return .reachableViaWiFi 
    }else if flags.contains(.connectionRequired) && flags.contains(.isWWAN) { 
     // Not sure here, maybe Wi-Fi assist is currently being utilized? Will need to test. 
     return .wifiAssist 
    }else if (flags.contains(.connectionOnDemand) == true || flags.contains(.connectionOnTraffic) == true) && flags.contains(.interventionRequired) == false { 
     // The connection is on-demand (or on-traffic) if the calling application is using the CFSocketStream or higher APIs and no [user] intervention is needed 
     return .reachableViaWiFi 
    } 
    else { 
     return .notReachable 
    } 
} 

Der Trick wird in einer Einstellung zu debuggen, wo Sie Wi-Fi wissen unterstützen aktiv ist und die Fahnen beobachten. Oder sei klüger als ich und weiß einfach, was sie sind. Ich werde diese Antwort aktualisieren, wenn jemand darauf hinweist, oder ich finde die richtige Kombination von Flags.

+0

Danke Jon, das war hilfreich. Jemand in meinem Team war in der Lage, etwas damit zu arbeiten, indem er dies als Leitfaden benutzte. Ich hoffe, Apple bietet dazu eine offizielle Anleitung. In der Zwischenzeit, Radar-Problem eingereicht ... –

+0

@NicholasHart Gut zu hören! Möchten Sie den Code posten, meinen Post bearbeiten oder mir die Änderungen senden, damit wir eine vollständige Antwort erstellen können? –

Verwandte Themen