2016-04-15 2 views
1

Ich benutze Erreichbarkeit Bibliothek in meinem Projekt, die mir ermöglicht, zu überprüfen, ob es irgendwelche Konnektivität, aber was ich jetzt versuche, ist, den Benutzer zu benachrichtigen, wenn Die Verbindung ist 2G oder sehr langsam. Dies führt zu einem Problem, wenn der Benutzer an einem GSM-Anruf teilnimmt und versucht, mit der App zu interagieren, während das Internet auf 2G eingestellt ist. Ich möchte sie informieren und vielleicht sagen, dass sie ihre mobilen Dateneinstellungen ändern oder eine Verbindung zu Wifi herstellen sollten. Ich habe versucht, CTTelephonyNetworkInfo-Code innerhalb des Connectivity-Check-Blocks zu verwenden, aber es benachrichtigt die App nicht, wenn das Internet knapp ist, und manchmal kann ich Nachrichten von diesem Anruf duplizieren. Irgendwelche Ideen?Benachrichtigen Sie Benutzer, wenn es eine sehr langsame Internet (2G) Verbindung gibt - iOS

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"); 
} 

Antwort

1

Warum sich mit all dieser Komplexität beschäftigen? Netzwerkprobleme treten außerhalb von 2G auf, warum sollten Sie sich also für dieses eine Netzwerk entscheiden?

Finden Sie einfach einen Weg, um die Netzwerkleistung zu messen, die Sie in Ihrer App erhalten (Anzahl der empfangenen Bytes in einem Intervall von einer Sekunde) und alarmieren Sie sie dann auf eine langsame Leistung, die sich auf ihre Erfahrung mit Ihrem auswirken könnte App

Oder ignorieren Sie einfach die ganze Sache und lassen Sie sie selbst herausfinden.

+0

Sie haben Recht, aber wir haben die meisten Probleme mit 2G während eines GSM-Anrufs bemerkt. Die meisten Benutzer würden schließlich ihre Verbindung überprüfen, wenn sie sehen, dass nichts in der App passiert, aber wir wollen sicherstellen, dass sie nicht uns und ihre Verbindung kennen. Ich denke, ich könnte die Netzwerkleistung ausprobieren oder einfach eine Nachricht bei Timeout ausgeben. –

Verwandte Themen