以编程方式更改"首选"的顺序的最佳方式是什么? OS X中的网络? Objective-C首选...
我可以使用CoreWLAN收集列表,甚至可以添加它,但就重新订购而言,我不知所措。我可以创建首选项文件的副本,编辑它并更改优先顺序,然后使用bash脚本来覆盖现有配置,但这似乎很麻烦。
我知道networksetup -addpreferredwirelessnetworkatindex命令,但它在10.10中无法正常工作(适用于10.9系统) - 它添加但未正确设置顺序。
SystemConfiguration框架?还有别的吗?
谢谢!
答案 0 :(得分:0)
在使用EAP-TTLS将用户从开放式无线网络转换为WPA2E网络后,我一直在寻找一种方法来实现这一目标。由于用户首先连接到开放式网络,因此在首选网络列表中保持较高的位置。
以下是我提出的建议:
CWInterface *interface = [CWInterface interfaceWithName:[
[CWInterface interfaceNames] anyObject]
];
CWMutableConfiguration *config = [CWMutableConfiguration
configurationWithConfiguration:interface.configuration
];
NSMutableArray *networks = [NSMutableArray arrayWithArray:
[config.networkProfiles array]
];
//Remove URI_Open (if present) and
//move URI_Secure (if present) to index 0
for (CWNetworkProfile *profile in [networks copy]) {
if ([[profile ssid] isEqualToString:@"URI_Secure"]) {
[networks removeObject:profile];
} else if ([[profile ssid] isEqualToString:@"URI_Open"]) {
CWNetworkProfile *tmp = profile;
[networks removeObject:tmp];
[networks insertObject:tmp atIndex:0];
}
}
config.networkProfiles = [NSOrderedSet orderedSetWithArray:networks];
SFAuthorization *auth = [SFAuthorization authorization];
BOOL authResult = [auth obtainWithRight:"system.preferences"
flags:(
kAuthorizationFlagExtendRights |
kAuthorizationFlagInteractionAllowed |
kAuthorizationFlagPreAuthorize
) error:nil
];
NSError *error = nil;
[interface commitConfiguration:config authorization:auth error:&error];
一些说明/免责声明: