2015-01-22 2 views
1

OS X에서 "선호하는"네트워크의 순서를 프로그래밍 방식으로 변경하는 가장 좋은 방법은 무엇입니까? Objective-C preferred ...Mac OS X 10.10 선호하는 네트워크 재정렬

CoreWLAN을 사용하여 목록을 수집하고 추가 할 수도 있지만 재주문하는 경우 손실이 발생합니다. 기본 설정 파일의 복사본을 만들어 편집하고 우선 순위를 변경 한 다음 bash 스크립트를 사용하여 기존 구성을 덮어 쓸 수는 있지만 엉망입니다.

networksetup-addpreferredwirelessnetworkatindex 명령을 인식하고 있지만 10.10에서 제대로 작동하지 않습니다 (10.9 시스템에서 정상적으로 작동 함). 제대로 추가되지만 주문은 올바르게 설정되지 않습니다.

SystemConfiguration 프레임 워크? 다른 것?

감사합니다.

답변

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]; 

몇 가지 메모/부인 : 여기에

내가 생각 해낸 것입니다

  • 나는 정기적으로 OS X를 사용하지 마십시오. 내 사무실에 하나의 테스트 Mac이 있습니다. 10.7.5가 설치되어 있습니다.
  • 이것은 Objective-C에서 처음 작성한 것입니다. 그것은 하나의 오후의 결과입니다; 그것은 아마 부서지고 추악합니다. YMMV.
  • 질문 10.10. 나는 interfaceWithName and interfaceNames, which are deprecated in 10.10을 사용했다. 적절한 대체물이 무엇인지 확실하지 않지만, CWWifiClient이 의심됩니다.
  • 내 접근 방식은 느슨하게 this ruby program을 기반으로했습니다.
  • 간결함을 위해 오류 처리가 제거되었습니다.
  • networksetup을 사용하거나 .mobileconfig에서 열린 네트워크를 제거하는 방법을 살펴 보았지만 어느 것도 제대로 작동하지 못했습니다. 난 그냥 변경 가능한 배열로 네트워크 프로필 목록을 뽑아 때문에
  • , 이것은 등
+0

그렉 정렬 임의 쉽게 적응할 수, 나는 비슷한 실행 결국,하지만이 작품과 좀 더 간결 귀하가 제공 한 코드로 앞으로 호환성에 대해 조금주의를 기울이지 만, 이것은 확실히 10.10에서 작동합니다. – kalikkalik