在系统网络偏好设置中,有一些位置名称。如何获取当前或活动的网络位置名称和所有网络位置列表?
我猜想SystemConfiguration.framework支持此功能,但我不确定要使用哪个API。
感谢您提前回答。
敬礼
Devara Gudda
在系统网络偏好设置中,有一些位置名称。如何获取当前或活动的网络位置名称和所有网络位置列表?
我猜想SystemConfiguration.framework支持此功能,但我不确定要使用哪个API。
感谢您提前回答。
敬礼
Devara Gudda
SCPreferencesCreate
来获取首选项,然后使用 SCNetworkSetCopyAll
来获取仅网络位置。 使用SCNetworkSetGetName
将获取位置的名称。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);
阅读 "系统配置编程指南" 以获取更多信息。
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
}