iOSアプリケーションを使用していて、携帯端末の携帯電話接続の種類を判別する必要があります。iOSで携帯電話のネットワークタイプを確認する
私のデバイスが使用している携帯電話ネットワークの種類に最も関心があります.2Gまたは3Gなどです。
ただし、Reachability.hはWi-Fiまたは3Gのチェックのみを提供します。
2G、3Gなどの確認方法を教えてください。
iOSアプリケーションを使用していて、携帯端末の携帯電話接続の種類を判別する必要があります。iOSで携帯電話のネットワークタイプを確認する
私のデバイスが使用している携帯電話ネットワークの種類に最も関心があります.2Gまたは3Gなどです。
ただし、Reachability.hはWi-Fiまたは3Gのチェックのみを提供します。
2G、3Gなどの確認方法を教えてください。
2G/3Gは、Reachability.h
または他のサードパーティのライブラリでは区別できません。iPhoneにはネットワークタイプ情報(WWAN、WiFi、ネットワークなし)のみがAPIとして提供されています。
しかし、2Gまたは3GネットワークのIP範囲を知ることができれば、iPhoneが使用しているネットワーク速度/周波数を判断できます。
[?この答えは絶対に正しい= = – Raptor
あなたは、この技術を用いて3GからEDGEを伝えることができます:iOSの中Determining 3G vs Edge
を7.0以降、私たちは私たちのネットワークの種類についての必要な詳細情報を提供することができますCoreTelephonyフレームワークを持っています。
CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init];
NSString *currentRadio = telephonyInfo.currentRadioAccessTechnology;
if ([currentRadio isEqualToString:CTRadioAccessTechnologyLTE]) {
// LTE
} else if([currentRadio isEqualToString:CTRadioAccessTechnologyEdge]) {
// EDGE
} else if([currentRadio isEqualToString:CTRadioAccessTechnologyWCDMA]){
// 3G
}
私が見つけた最良の方法:
+ (NSNumber *)dataNetworkTypeFromStatusBar {
UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSNumber *dataNetworkItemView = nil;
for (id subview in subviews) {
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
dataNetworkItemView = subview;
break;
}
}
return [dataNetworkItemView valueForKey:@"dataNetworkType"]; }
/* Where
0 = No wifi or cellular
1 = 2G and earlier
2 = 3G
3 = 4G
4 = LTE
5 = Wifi
*/
方法は、ステータスバーの値をチェックしているので、ステータスバーがアプリケーションの中に隠されていないことを確認してください。表示されない場合、メソッドは常に0を返します。
ios sdkには多くの制限があります.2g/3g/LTEのアイデンティティチェックはありません。 –