Jan Stoltman
02/27/2020, 1:46 PMfunc isVPNConnected() -> Bool {
let cfDict = CFNetworkCopySystemProxySettings()
let nsDict = cfDict!.takeRetainedValue() as NSDictionary
let keys = nsDict["__SCOPED__"] as! NSDictionary
for key: String in keys.allKeys as! [String] {
if (key == "tap" || key == "tun" || key == "ppp" || key == "ipsec" || key == "ipsec0") {
return true
}
}
return false
}
Kotlin:
fun isVPNConnected(): Boolean {
val cfDict = CFNetworkCopySystemProxySettings()
val nsDifct = cfDict as? NSDictionary //It fails here
val keys = nsDifct?.valueForKey("__SCOPED__") as NSDictionary?
return keys?.allKeys?.any { key ->
key == "tap" || key == "tun" || key == "ppp" || key == "ipsec" || key == "ipsec0" || key == "utun1"
} ?: false
}
Could anybody help me to understand how takeRetainedValue
should be mapped into kotlin?Artyom Degtyarev [JB]
02/27/2020, 1:53 PMArtyom Degtyarev [JB]
02/27/2020, 1:55 PMCFBridgingRetain
would make sense here but I’m not expert enough.Jan Stoltman
02/27/2020, 2:50 PMArtyom Degtyarev [JB]
02/28/2020, 7:37 AMval cfDict:CFDictionaryRef? = CFNetworkCopySystemProxySettings()
val nsDifct:NSDictionary = CFBridgingRelease(cfDict) as NSDictionary
should work? I got no working sample for now, but at least it follows some logic if I understand things correctly.ribesg
02/28/2020, 9:18 AMJan Stoltman
02/28/2020, 10:52 AMJan Stoltman
03/04/2020, 2:11 PM