Veo muchos ejemplos de Accesibilidad en los que las personas solo muestran un mensaje cuando cambia el estado de accesibilidad.
Pero recientemente, vi en la aplicación Foursquare que muestran un mensaje cada vez que el usuario intenta realizar una acción que requiere una conexión a Internet.
Creo que esto es más robusto y un mejor UX para recordarle al usuario que no puede hacer nada sin Internet. Principalmente porque los usuarios pueden cambiar de aplicación, hacer otra cosa y olvidar que no tiene conexión cuando regrese.
Además, tan pronto como recuperan la conexión, veo que obtienen datos de Internet y actualizan la interfaz de usuario.¿Debo escuchar las actualizaciones de accesibilidad en cada UIViewController?
Lo que realmente estoy buscando es la mejor manera de hacerlo. ¿Cómo se hace esto?
¿Tienen un UIViewController general que verifica la accesibilidad cada vez que necesita una conexión?
¿O tienen un tipo de clase proxy antes de cada solicitud de Internet que cancela la solicitud y muestra un mensaje? ¿Cómo están lidiando con eso?
Gracias.
EDIT:
La solución que se me ocurrió es usar AFNetworking que también proporcionan estado de disponibilidad en el cuadro.
Básicamente creé un AFHTTPClient y establecí un bloque de devolución de llamada de accesibilidad para escuchar los cambios de estado. El objeto AFHTTPClient es para toda la aplicación (tipo de singleton). (De hecho, tengo un AFHTTPClient por host que necesito para llegar a a.com, b.com ...).
Luego, cuando necesito realizar una solicitud, creo una nueva AFHTTPRequestOperation (AFJSONRequestOperation en mi caso) y la encola en mi objeto AFHTTPClient. En el bloque de falla de la operación, verifico si el host es alcanzable con la propiedad networkReachabilityStatus
del AFHTTPClient. Si es inalcanzable, mostraré un mensaje de que no hay conexión a Internet para el usuario.
Lo terminé, así que no tengo que hacer esto cada vez que creo una operación. Entonces, ahora en la aplicación, cada vez que el usuario intenta hacer algo cuando no hay conexión, recibe un mensaje recordándole que no tiene acceso a internet.
También uso la devolución de llamada de accesibilidad para volver a cargar datos en una pantalla una vez que recupero la conexión (o más bien, una vez que se supone que tengo una conexión).
No sé si es la mejor práctica, pero creo que es bueno saber que la aplicación se encarga de volver a cargar datos importantes tan pronto como haya una nueva conexión disponible.
Si a alguien le interesa un código de muestra, puedo proporcionarlo.
Muchas gracias por esta respuesta, ¿recuerda qué video/charla WWDC es? – florian
No estoy seguro de recordarlo. Pruebe las sesiones 706 y 225 (segunda parte de la sesión). – viggio24