Как программно узнать, использует ли iPhone 3G, 4G или GPRS соединение?Есть ли способ включить и отключить 3G-соединение программно? - PullRequest
0 голосов
/ 25 апреля 2011

Я хотел узнать, как определить, подключено ли мое устройство к сети 3G или GPRS / 4G. Особенно, использует ли он соединение 3G или нет? Есть ли способ сделать это программно?

Кроме того, я хотел включить и отключить 3G программно?

Все будет хорошо, даже если предлагается частный API.

Ответы [ 2 ]

1 голос
/ 21 января 2013

Если вы не возражаете против использования частных API (Apple откажется от этого, если вы хотите продать его в 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);
1 голос
/ 25 апреля 2011

Ну, я могу взять первую часть Вопроса.

В имеется библиотека для разработчиков iOS - Достижимость Посмотрите на Reachability.m , это указывает, есть ли у вас соединение и тип соединения.

...