当互联网(2G)连接速度很慢时通知用户 - iOS

时间:2016-04-15 13:43:42

标签: ios notifications xcode7 reachability network-connection

我在我的项目中使用Reachability库,它允许我检查是否有任何连接,但我现在要做的是通知用户连接是2G还是非常慢。当用户正在进行GSM通话并且在互联网设置为2G时尝试与应用程序进行交互时,这会导致问题。我想通知他们,或许他们应该改变他们的移动数据设置或连接到Wifi。我一直在尝试在连接检查块中使用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");
}

1 个答案:

答案 0 :(得分:1)

为什么要担心所有这些复杂性?网络问题发生在2G之外,那么为什么选择这个网络呢?

只需找到一种方法来衡量您在应用中获得的网络性能(以一秒为间隔收到的字节数),然后提醒他们降低性能,这可能会影响他们使用您的应用的体验

或者完全忽略整个事情并让他们自己解决。