プロジェクトで Reachability ライブラリを使用しています。これにより、接続があるかどうかを確認できますが、接続が 2G であるか非常に遅いかどうかをユーザーに通知することを試みています。これにより、ユーザーが GSM 通話中に、インターネットが 2G に設定されているときにアプリを操作しようとすると問題が発生します。モバイル データの設定を変更するか、Wi-Fi に接続する必要があることを伝えたいと思います。接続チェック ブロック内で CTTelephonyNetworkInfo コードを使用しようとしましたが、インターネットの状態が低いときにアプリに通知せず、この呼び出しからメッセージを複製できる場合があります。何か案は?
switch (_tcpipReachability.currentReachabilityStatus) {
case ReachableViaWiFi:
self.networkAccessible = (self.wifiReachability.currentReachabilityStatus != NotReachable);
break;
case ReachableViaWWAN:
self.networkAccessible = self.useOperatorBearer;
break;
case NotReachable:
default:
self.networkAccessible = NO;
break;
}
//connection type
CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) {
NSLog(@"2G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) {
NSLog(@"2G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]) {
NSLog(@"3G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA]) {
NSLog(@"3G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]) {
NSLog(@"3G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x]) {
NSLog(@"2G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {
NSLog(@"3G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {
NSLog(@"3G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {
NSLog(@"3G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
NSLog(@"3G");
} else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
NSLog(@"4G");
}