2017-03-23 5 views
4

특정 시간 간격 후에 연결 상태 보고서를 가져 오는 데 사용할 수있는 앱이 있습니다. Wi-Fi 네트워크에 연결되어 있거나 연결된 경우에도 데이터 액세스가 셀룰러 네트워크를 통해 활성화되었는지 알고 싶습니다. 즉, 확인한 후에 Wi-Fi 네트워크와 정상적으로 연결을 끊을 수 있으며 장치가 연결될 수있는 사용 가능한 셀룰러 연결이 있음을 알 수 있습니다.iOS에서 '모바일 네트워크 데이터'가 사용 설정되었는지 또는 사용 중지되었는지 (Wi-Fi로 연결되어있는 경우에도 마찬가지 임)

현재 도달 가능성 메서드는 실제로 연결되어있을 때만 셀룰러의 가용성에 대한 정보를 제공하며 실제로 인터페이스에 연결하기 전에이 데이터를 가져 오는 것에 대한 정보는 많지 않습니다.

link에서 설명한대로 Android에서 사용 가능한 것과 유사한 해결책을 찾고 있습니다.

내 장치가 세포 기능을 가지고 있는지를보기 위해 찾고 있지 않다

설명. 사용자가 모바일 네트워크를 통해 데이터 액세스를 사용 설정/사용 중지 설정했는지 확인하려고 시도하고 있으며 Wi-Fi에 연결되어 있어도이 정보를 알고 싶습니다. 사용자는 설정으로 이동하여이 기능을 켜고 끌 수 있습니다.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil]; 
     Reachability *reachablity=[Reachability reachabilityWithHostName:@"google.com"]; 

     [reachablity startNotifier]; 

     // reachablity = [Reachability reachabilityForInternetConnection]; 

     NetworkStatus remoteHostStatus = [reachablity currentReachabilityStatus]; 
     if(remoteHostStatus == NotReachable) { 
      NSLog(@"network not available "); 


     } 
     else if (remoteHostStatus == ReachableViaWiFi) { 
      NSLog(@"connect with wifi"); 


     } 
     else if (remoteHostStatus == ReachableViaWWAN) { 
      NSLog(@"Cellulor network "); 


     } 
     return netwrokCheck; 

답변

0

https://github.com/ashleymills/Reachability.swift 도달 가능성 네트워크가

var isReachableViaWWAN: Bool { 
    // Check we're not on the simulator, we're REACHABLE and check we're on WWAN 
    return isRunningOnDevice && isReachableFlagSet && isOnWWANFlagSet 
} 
+0

내가 언급했듯이, 나는 현재 내가 특정 인터페이스에 연결되어 있는지 찾고 있지 않다. 나는 셀룰러 네트워크 연결이 "사용 가능"하고 "사용 가능"인지 "Wi-Fi를 통해 현재 연결될 때"알려주므로 Wi-Fi 네트워크와의 연결을 끊을 때 장치가 OS가 특정 네트워크에 연결하지 못하는 경우를 대비하여 셀룰러 인터페이스로 전환하십시오. –

-1

는 u는 모든 시나리오를 알 수 WWAN을 통해 도달 할 수 있는지를 결정하는 방법이있다 계획 : 신뢰할 수있는 (데이터) 연결이 향후 어떤 시점에서든 사용할 수 있는지 여부를 결코 결정할 수 없습니다.

  • 사용자가 이동 통신사를 통해 데이터 전송을 중지 할 수 있으므로 Wi-Fi가 다운되면 셀룰러 연결로 데이터가 제공되지 않습니다.
  • 또는 사용자가 설정에서 즉시 변경할 수 있습니다.
  • 또는 무선으로 바로 그 순간에 내려 갈 수있는 휴대 전화 연결이 끊어 (차폐 된 방이나 STH를 입력하십시오.)
  • 그리고 더 많은 일들이 일어날 수, 그 사이에 비밀 방에서 ™

당신은 단절 가능성을 다루고 그러한 경우 (예 : 충돌 대신)에 자비로운 행동을 제공하기 만하면됩니다.

+0

내가 언급했듯이, 나는 현재 내가 특정 인터페이스에 연결되어 있는지 찾고 있지 않다. 나는 셀룰러 네트워크 연결이 "사용 가능"하고 "사용 가능"인지 "Wi-Fi를 통해 현재 연결될 때"알려주므로 Wi-Fi 네트워크와의 연결을 끊을 때 장치가 OS가 특정 네트워크에 연결하지 못하는 경우를 대비하여 셀룰러 인터페이스로 전환하십시오. –

+0

@Shane U 모바일 데이터가 모바일 데이터를 wifi로 전환하고 wifi가 모바일 데이터로 전환하는 경우 앱에 대한 지속적인 업데이트를 알고 싶습니까? –

+0

내가 전환 한 후 현재 인터페이스의 상태를 알고 싶지 않습니다. 알리미 또는 어떤 종류의 콜백도 작동합니다. 하지만 내가 찾고있는 것은 현재의 셀룰러 상태 (사용 가능한 사용 설정 <모바일 데이터가 설정되어 있음>에 대한 정보)입니다. Wi-Fi 네트워크에 연결되었습니다. 이유는 내가 이것을 찾고 있는데, 현재의 WiFi 네트워크 연결이 나쁜 경우 휴대 전화로 전환하고 싶습니다. –

0

을 나는 당신이 당신이 무엇에 대해 다시 생각해야한다 생각한다

+0

당신이 말한 것에 동의하십시오. 이유는 내가 이것을 찾고 있는데, 현재의 WiFi 네트워크 연결이 좋지 않거나 RSSI가 낮 으면 셀룰러로 전환하고 싶을 것입니다. 이 경우 셀룰러를 사용할 수 있는지 쿼리하고, 그렇다면 네트워크에서 연결을 끊습니다. 연결 후, 셀룰러 데이터 전송이 일어나고 있는지 또는 셀룰러 연결이 끊어 지는지 여부는 사용자의 책임입니다. 이것은 실제로 요구 사항이며 사용자는 단말기에서 셀룰러 연결성을 사용할 수 있다고 가정합니다. –

+0

글쎄, 나는 (애플 제약/누락 된 API로 인해) 장치를 WiFi에서 분리하고 셀룰러 네트워크로 전환하는 것을 허용하지 않을 것이라고 확신한다. 기기의 설정에는 이러한 옵션이 있지만 활성화되어 있는지 여부를 쿼리 할 수 ​​있는지 여부는 알 수 없습니다. –

+0

Api를 사용하면 연결된 네트워크에서 연결을 해제하고 특정 와이파이 네트워크에 대한 연결을 피할 수 있습니다. 원하는 경우 API를 공개 할 수 있습니다. 그래서 내가 다른 부분을 요구하면서 내가 완전한 동그라미를 완성 할 수있게 된 것이다.내가 Wi-Fi 네트워크로 할 수 있기 때문에, 셀룰러 인터페이스 –

1

모바일 데이터 사용 여부를 앱이 쿼리 할 수있는 API가 없습니다. CTCellularData의 cellularDataRestrictionDidUpdateNotifier 및 restrictedState를 사용하여 사용자가 응용 프로그램에 대한 셀룰러 데이터 액세스를 활성화 또는 비활성화했는지 여부를 알 수 있습니다. 그것이 iOS가 애플리케이션을 허용하는 최대 값입니다. 그리고 심지어 당신이 이전의 제한된 상태 상태를 줄 것입니다 장치에서 시뮬레이션을 제거하는 것처럼 이것은 신뢰할 수 없습니다.

+0

예. 이것은 사실입니다. 또한이 API를 확인했지만 여전히 정확한 결과를 제공하지는 않습니다. 이전 상태가 제한되지 않은 경우, 시뮬레이션이 제거되거나 셀룰러 데이터가 비활성화 된 경우에는 제한되지 않습니다. –