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