In system network preference there are some location names.How to get the current or active network location name and list of all network locations?
I guess SystemConfiguration.framework supports this but i didn't get exactly which API to use.
Thanks in advance for your answer.
Regards
Devara Gudda
Asked
Active
Viewed 2,536 times
3

Raviprakash
- 2,410
- 6
- 34
- 56
2 Answers
7
You can use SCPreferencesCreate
to get the preferences, then SCNetworkSetCopyAll
to get just the network locations. SCNetworkSetGetName
will get the name of a location.
SCPreferencesRef prefs = SCPreferencesCreate(NULL, @"SystemConfiguration", NULL);
NSArray *locations = (NSArray *)SCNetworkSetCopyAll(prefs);
for (id item in locations) {
NSString *name = (NSString *)SCNetworkSetGetName((SCNetworkSetRef)item);
...
}
CFRelease(locations);
CFRelease(prefs);
Read "System Configuration Programming Guidelines" for more.

outis
- 75,655
- 22
- 151
- 221
-
Thanks it's working. I am using SCNetworkSetCopyCurrent to get the current n/w location. – Raviprakash Apr 04 '10 at 05:38
1
This is a swift 5.1 implementation to get list of all available network location
func getAvailabeNetworkLocation() -> [String]
{
var results = [String]()
var prefs : SCPreferences
prefs = SCPreferencesCreate (nil, "Softech" as CFString, nil)!
var sets : CFArray
sets = SCNetworkSetCopyAll (prefs)!
let count = CFArrayGetCount(sets) as Int
var newSet : SCNetworkSet? = nil
var bFound : Bool = false
for nIndex in 0..<count {
let mySet = CFArrayGetValueAtIndex (sets, nIndex)
let key = Unmanaged<SCNetworkSet>.fromOpaque(mySet!)
newSet = key.takeUnretainedValue()
let name : String = SCNetworkSetGetName(newSet!)! as String
print("Network location name: \(name)")
results.append(name)
}
return results
}

Francesco Germinara
- 508
- 5
- 8