2011-04-25 75 views
0

我想知道如何決定我的設備是在3G還是GPRS/4G網絡。尤其是否使用3G連接? 有螞蟻的方式來編程嗎?如何以編程方式獲取iPhone是否使用3G,4G或GPRS連接?有沒有辦法以編程方式啓用和禁用3G連接?

此外,我想以編程方式啓用和禁用3G?

即使建議使用私有API,也可以。

在此先感謝。

+0

您是越獄後iPhone/iPad的編程嗎? – 2011-04-25 07:56:02

+0

事實上,即使它有私人API,它也會有所幫助。我的意思是,如果你可以告訴我如何以編程方式啓用/禁用3G,我可以監禁我的iPhone – Tanu 2011-04-25 08:17:00

+0

現在好了JB設備是不同的故事,我會做我最好爲你解決問題。 – 2011-04-25 08:26:37

回答

1

那麼我可以採取問題的第一部分。

有一個在iOS Developer Library - Reachability 樣品看看Reachability.m它表明你是否有一個連接和類型的連接。

+0

行..我已經看過這段代碼。它只告訴我iPhone是否使用cellualr網絡或WI-FI。但是在Cellualr網絡的情況下,我並沒有得到哪個蜂窩網絡iPhone使用,即它是否使用3G/GPRS/4G/EDGE網絡 – Tanu 2011-04-25 08:18:57

+0

您可以建議我採用何種類型的Cellualr網絡。特別是我有興趣知道iPhone是否使用3G – Tanu 2011-04-25 08:19:39

1

如果你不介意使用私有API(如果你想在AppStore上銷售它,Apple會拒絕這個),你可以使用下面的代碼。然而,它在網絡變化上並不穩定。

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); 
相關問題