デバイスが 3G または GPRS/4G ネットワーク上にあるかどうかを判断する方法を知りたいと思っていました。特に 3G 接続を使用しているかどうか。プログラムでそれを行う方法はありますか?
また、プログラムで 3G を有効または無効にしたいですか?
プライベート API が提案されても問題ありません。
デバイスが 3G または GPRS/4G ネットワーク上にあるかどうかを判断する方法を知りたいと思っていました。特に 3G 接続を使用しているかどうか。プログラムでそれを行う方法はありますか?
また、プログラムで 3G を有効または無効にしたいですか?
プライベート API が提案されても問題ありません。
さて、私は質問の最初の部分を取ることができます。
iOS開発者ライブラリにサンプルがあります-ReachabilityReachability.m を見てください。これは、接続があるかどうか、および接続の種類を示します。
プライベート 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);