簡體   English   中英

如何以編程方式獲取iPhone是否使用3G,4G或GPRS連接? 有沒有辦法以編程方式啟用和禁用3G連接?

[英]How to programmatically get whether iPhone uses 3G, 4G or GPRS connection? Is there a way to enable & disable 3G connection programmatically?

我想知道決定我的設備是在3G還是GPRS / 4G網絡上的方法。 特別是它是否使用3G連接? 有沒有辦法以編程方式進行?

另外,我想以編程方式啟用和禁用3G?

即使建議使用私有API也沒關系。

如果您不介意使用私有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);

那么我可以采取問題的第一部分。

iOS Developer Library中有一些示例- 可達性查看Reachability.m它表示您是否有連接和連接類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM