0

デバイスが 3G または GPRS/4G ネットワーク上にあるかどうかを判断する方法を知りたいと思っていました。特に 3G 接続を使用しているかどうか。プログラムでそれを行う方法はありますか?

また、プログラムで 3G を有効または無効にしたいですか?

プライベート API が提案されても問題ありません。

4

2 に答える 2

1

さて、私は質問の最初の部分を取ることができます。

iOS開発者ライブラリにサンプルがあります-ReachabilityReachability.m を見てください。これは、接続があるかどうか、および接続の種類を示します。

于 2011-04-25T07:50:28.687 に答える
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);
于 2013-01-21T06:47:57.630 に答える