2012-04-18 5 views
1

사용자의 기기가 Wi-Fi에 갑자기 연결될 때 전달되는 알림이 있습니까? 아니면 이런 성격의 무엇인가?무선의 변경을 감지했습니다.

사용자가 무선에 연결할 때마다 내 앱 대리인의 특정 선택기/메소드가 실행되기를 원합니다. 선택자를 수행 할시기를 어떻게 알 수 있습니까?

** 수정 **

나는 사람이 그것을 필요 경우 IOS 5 ARC friendly version of Reachability을 찾는 끝났다.

+2

사과에서이 프로젝트 확인 : http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html – CarlJ

답변

2

here의 도달 가능성 헤더와 구현을 포함해야합니다.

얼마 전에 내가 특정 시간에 WiFi에 연결되어 있는지 확인해야하는 프로젝트를 수행했습니다. 다음은 유용한 코드입니다.

- (BOOL) connectedToNetwork 
{ 
    // Create zero addy 
    struct sockaddr_in zeroAddress; 
    bzero(&zeroAddress, sizeof(zeroAddress)); 
    zeroAddress.sin_len = sizeof(zeroAddress); 
    zeroAddress.sin_family = AF_INET; 

    // Recover reachability flags 
    SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); 
    SCNetworkReachabilityFlags flags; 

    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); 
    CFRelease(defaultRouteReachability); 

    if (!didRetrieveFlags) 
    { 
     printf("Error. Could not recover network reachability flags\n"); 
     return 0; 
    } 

    BOOL isReachable = flags & kSCNetworkFlagsReachable; 
    BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired; 
    BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection; 
    return ((isReachable && !needsConnection) && !(nonWiFi)) ? YES : NO; 
} 

WiFi에 연결되어 있으면 true를 반환합니다.

변화가 발생했을 때를 감지하는 한 가지 방법은 NSTimer을 실행하고 결과가 시간이 지남에 따라 변경되는지 확인하는 것입니다. 당신은 너무 자주 그것을 실행하고 싶지 않을 것입니다.

관련 문제