2011-04-25 6 views
0

내 장치가 3G 또는 GPRS/4G 네트워크에 있는지 여부를 결정하는 방법을 알고 싶었습니다. 특히 3G 연결을 사용하는지 여부를 결정 했습니까? 프로그래밍 방식으로 수행하는 개미 방법이 있습니까?iPhone이 3G, 4G 또는 GPRS 연결을 사용하는지 프로그래밍 방식으로 얻는 방법? 프로그래밍 방식으로 3G 연결을 사용하거나 사용하지 않도록 설정하는 방법이 있습니까?

또한 프로그래밍 방식으로 3G를 활성화 및 비활성화하고 싶었습니까?

개인 API가 제안 된 경우에도 문제가 없습니다.

미리 감사드립니다.

+0

jailbreaking iPhone/iPad에서 프로그래밍 중입니까? –

+0

사실, 그것이 개인 API를 가지고 있더라도 도움이 될 것입니다. 제 말은, 3G를 프로 그램 가능하게하거나 불가능하게하는 방법을 말해 줄 수 있다면 감옥에 갈 수 있습니다. – Tanu

+0

지금 JB 장치는 다른 이야기입니다. 솔루션을 받으려면 최선을 다하십시오. –

답변

1

글쎄, 나는 질문의 첫 부분을 취할 수있다. iOS Developer Library - Reachability 샘플 당신이 연결 및 연결의 종류가 있는지 여부가 표시 에서 Reachability.m을 살펴 보자 있습니다

.

+0

ok ..이 코드를 이미 보았습니다. iPhone이 clulualr 네트워크 또는 WI-FI를 사용하는지 여부 만 알려줍니다. 하지만 cellualr 네트워크의 경우 3G/GPRS/4G/EDGE 네트워크를 사용하는지 여부는 셀룰러 네트워크 iPhone을 사용하고 있지 않습니다. – Tanu

+0

Cellualr 네트워크 유형을 얻을 수있는 방법을 제안 해 줄 수 있습니까? 특히 나는 iPhone이 3G를 사용하는지 여부를 아는 데 관심이 있습니다. – Tanu

1

비공개 API 사용에 신경 쓰지 않는다면 (AppStore에서 애플을 판매하기를 원한다면 애플은이를 거부 할 것입니다.) 코드를 사용할 수 있습니다. 그러나 네트워크 변경시 불안정합니다.

void *libHandle=dlopen("/System/Library/PrivateFrameworks/SoftwareUpdateServices.framework/SoftwareUpdateServices",RTLD_LAZY); 

Class SUNetworkMonitor = NSClassFromString(@"SUNetworkMonitor"); 
NSObject *networkMonitor=[SUNetworkMonitor sharedInstance]; 

// check if the class have the method currentNetworkType 
if ([networkMonitor respondsToSelector:@selector(currentNetworkType)]) 
{ 
    int t = (int)[networkMonitor performSelector:@selector(currentNetworkType)]; 

    NSString *type = @""; 
    switch (t) { 
     case 0: type = @"NO-DATA"; break; 
     case 1: type = @"WIFI"; break; 
     case 2: type = @"GPRS/EDGE"; break; 
     case 3: type = @"3G"; break; 
     default: type = @"OTHERS"; break; 
    } 

    NSLog(@"Network type: %@", type); 
} 
dlclose(libHandle);