Post

Replies

Boosts

Views

Activity

NWConnection how to force ipv4 ?
 I have the following code to force the connectivity over cellular and it works perfectly 	 let tcpOptions = NWProtocolTCP.Options()     tcpOptions.connectionTimeout = 5     var tlsOptions: NWProtocolTLS.Options?     var port = 80     if (url.scheme!.starts(with:"https")) {       port = 443       tlsOptions = .init()     }     /*force network connection to cellular only*/     let params = NWParameters(tls: tlsOptions , tcp: tcpOptions)     params.requiredInterfaceType = .cellular     params.prohibitExpensivePaths = false     params.prohibitedInterfaceTypes = [.wifi]     /* create network connection */     connection = NWConnection(host: NWEndpoint.Host(url.host!), port: NWEndpoint.Port(rawValue: UInt16(port))!, using: params) Now I'm looking to force the connection to use ipv4 (even if the phone has an ipv6 available) because the targeted server has a broken ipv6 support and I don't have control over it (it belongs to a mobile operator) Any idea? E
10
0
3.2k
Nov ’20
Forcing cellular connectivity
I'm trying to force the connectivity over cellular only , without much luck so far, the wifi is always used unless it's turned off Any idea? var connection: NWConnection?   func startConnection(url: URL) {     let pathMonitor = NWPathMonitor()     pathMonitor.pathUpdateHandler = { path in       if path.usesInterfaceType(.wifi) {         print("Path is Wi-Fi")       } else if path.usesInterfaceType(.cellular) {         print("Path is Cellular")       } else if path.usesInterfaceType(.wiredEthernet) {         print("Path is Wired Ethernet")       } else if path.usesInterfaceType(.loopback) {         print("Path is Loopback")       } else if path.usesInterfaceType(.other) {         print("Path is other")       }     }     pathMonitor.start(queue: .main)                 let params = NWParameters.tls     params.requiredInterfaceType = .cellular     params.prohibitExpensivePaths = false     params.prohibitedInterfaceTypes = [.wifi]     let connection = NWConnection(host: NWEndpoint.Host(url.host!), port: 443, using: params)     self.connection?.stateUpdateHandler = { (newState) in       print("This is stateUpdateHandler:")       switch (newState) {         case .ready:           print("State: Ready\n")         case .setup:           print("State: Setup\n")         case .cancelled:           print("State: Cancelled\n")         case .preparing:           print("State: Preparing\n")         default:           print("ERROR! State not defined!\n")       }     }           connection.start(queue: .main)     self.connection = connection     print(connection.debugDescription)   }
3
0
1.3k
Sep ’20