segunda - Determinar cuándo regresa una conexión EDGE después de un abandono en un iPhone
mi iphone se desconecta del wifi a cada rato ios 11 (2)
He incorporado la muestra Reachability de Apple en mi propio proyecto, así sé si tengo o no una conexión de red; si no tengo una conexión de red, no me molesto en enviar y solicitar. Decidí ir con la implementación de notificación de estado porque parecía más fácil tener la reachablity actualizada en segundo plano y tener los resultados actuales disponibles de inmediato en lugar de iniciar una solicitud sincrónica cada vez que quiero establecer una conexión de red.
Mi problema es que empiezo a obtener negativos falsos cuando estoy en una red EDGE: el teléfono tiene conectividad, pero la aplicación cree que este no es el caso. Según tengo entendido, no recibes una notificación cuando hay una conexión EDGE, así que mi suposición es que perdí y recuperé la conexión en algún momento. Reiniciar la aplicación suele ser suficiente para ver la conexión de red.
Esta no es una solución óptima, así que me preguntaba si alguien más se encontró con este problema y tenía alguna idea sobre una solución.
(No sé si esto también se aplica a 3G, estoy ejecutando un iPhone de primera generación).
Las notificaciones de accesibilidad tampoco me parecieron confiables para detectar Wi-Fi. Así que solo uso encuestas en su lugar. Revisar cada 5 segundos parece no hacer daño.
- (void) checkReachability {
BOOL connected = ([[Reachability sharedReachability] localWiFiConnectionStatus] == ReachableViaWiFiNetwork);
// Do something...
[self performSelector:@selector(checkReachability) withObject:nil afterDelay:5.0];
}
Hay un buen ejemplo de accesibilidad en la red. funciona maravillosamente bien: http://servin.com/iphone/iPhone-Network-Status.html
Pero verás, cuando trato de usarlo a mi manera, solo bombardea.
Intenté implementarlo usando:
NSString *sCellNetwork;
NSString *sNetworkReachable;
if (flags & kSCNetworkFlagsReachable || flags & kSCNetworkReachabilityFlagsIsWWAN)
{do it}
else {
Network fail alert;
}