Con iOS 12, Apple ha introducido Network, un framework que incluye la clase NWPathMonitor. NWPathMonitor nos da los medios para monitorizar los cambios de estado en la conexión con internet (de forma que ya no es necesario utilizar la clase Reachability, en aplicaciones que soporten de iOS 12 en adelante). Por tanto, podemos dejar de lado la librería Reachability, y detectar el estado de la red con NWPathMonitor.

Introducción

Para utilizar esta nueva forma de comprobar el estado de la conexión a internet, primero necesitamos crear una instancia de NWPathMonitor:

También podemos instanciar la clase NWPathMonitor indicando un tipo particular de red que queremos comprobar. Por ejemplo, para comprobar conexiones WiFi:

NWPathMonitor puede comprobar diferentes tipos de interfaces:

  • cellular. Para conexiones 3G/4G.
  • loopback. Para localhost.
  • other. Para redes virtuales o tipos de red desconocidos.
  • wifi. Para conexiones WiFi.
  • wiredEthernet. Si el dispositivo esta conectado a internet por cable.

La detección de los cambios de estado de la conexión a internet se realizan a través de la propiedad pathUpdateHandler:

path es del tipo NWPath y, de acuerdo con la documentación de Apple, status puede ser:

  • unsatisfied. La conexión (path) no se puede utilizar.
  • satisfied. La conexión (path) se ha establecido y permite enviar datos.
  • requiresConnection. La conexión (path) no está disponible actualmente, pero si se establece una nueva conexión puede activarse.

Para obtener más información sobre las posibilidadades de NWPath podemos acceder a la documentación de Apple.
Por último, para poder empezar a recibir información sobre los cambiós de estado de la conexión a internet, necesitamos llamar el método start(). El método start() necesita una cola para hacer este trabajo:

Una vez ya no necesitamos conocer los cambios en el estado de la conexión a internet, llamaremos al método cancel().

Ejemplo de código

Por ejemplo, supongamos que queremos conocer en todo momento el estado de la conexión a internet en toda la aplicación. Para ello podemos usar una clase de tipo Singleton:

Donde ConnectionType es un enum que contine los casos específicos de conectividad para nuestra app. Por ejemplo:

Para utilizar esta clase de tipo Singleton:


0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Sígueme en Feedly
shares