iOSSESIÓN


Observaciones

La clase NSURLSession y las clases relacionadas proporcionan una API para descargar contenido. Esta API proporciona un amplio conjunto de métodos de delegado para admitir la autenticación y le brinda a la aplicación la capacidad de realizar descargas en segundo plano cuando la aplicación no se está ejecutando o, en iOS, mientras la aplicación está suspendida.

En un nivel alto, NSURLSession se basa en el concepto de sesiones y tareas. Una tarea representa una solicitud única para una URL única (o una carga única a una URL única). Una sesión es un grupo de solicitudes relacionadas.

El sistema operativo proporciona una única sesión preexistente: la sesión compartida, que básicamente funciona como NSURLConnection. Además, puede crear sus propias sesiones en su aplicación según sea necesario.

Diferentes aplicaciones utilizan las sesiones de diferentes maneras. Muchas aplicaciones crean una sola sesión en el inicio y simplemente la reutilizan. Otras aplicaciones se benefician de la posibilidad de cancelar un grupo de tareas relacionadas (por ejemplo, un navegador web que cancela todas las solicitudes pendientes al cerrar una pestaña) y, por lo tanto, crean una sesión para contener cada grupo de solicitudes relacionadas.

El primer paso cuando se usa NSURLSession es crear un objeto de configuración de sesión. El objeto (generalmente) reutilizable contiene varias configuraciones de sesión que puede modificar para sus necesidades particulares, como máxima concurrencia, encabezados adicionales para enviar con cada solicitud, ya sea para permitir el envío de solicitudes a través de la radio celular (solo iOS), tiempos de espera, almacenamiento de credenciales, versión mínima de TLS e incluso configuraciones de proxy.

Hay tres tipos de configuraciones de sesión, dependiendo de cómo desea que se comporte la sesión resultante:

  • Las configuraciones predeterminadas crean sesiones que funcionan de manera muy similar a NSURLConnection.
  • Las configuraciones en segundo plano crean sesiones en las que las solicitudes pasan fuera del proceso, lo que permite que las descargas continúen incluso cuando la aplicación ya no se ejecuta.
  • Las configuraciones efímeras crean sesiones que no almacenan en caché nada en el disco, no almacenan cookies en el disco, etc. y, por lo tanto, son adecuadas para respaldar cosas como las ventanas de incógnito del navegador.

Cuando crea una configuración en segundo plano, debe proporcionar un identificador de sesión que le permita volver a asociar la sesión en segundo plano más tarde (si su aplicación sale o es suspendida o terminada por el sistema operativo). No debe tener más de una instancia de una sesión con el mismo identificador activo en su aplicación, por lo que, como regla, estas configuraciones no son reutilizables. Todas las demás configuraciones de sesión se pueden reutilizar para crear tantas sesiones como desee. Por lo tanto, si necesita crear varias sesiones con configuraciones similares, puede crear la configuración una vez y reutilizarla cada vez que cree una nueva sesión.

Después de crear una sesión, puede crear tareas en esa sesión. Hay tres tipos de tareas:

  • Las tareas de datos devuelven datos como un objeto NSData . Estos son adecuados para uso general, pero no se admiten en sesiones de fondo.
  • Las tareas de descarga devuelven datos como un archivo en el disco. Estos son adecuados para solicitudes más grandes, o para uso en sesiones de fondo.
  • Cargar tareas cargar datos desde un objeto NSData o desde un archivo en el disco. Proporciona un objeto o archivo de datos que proporciona el cuerpo POST. Los datos / archivos de cuerpo que proporciona en la tarea anulan cualquier archivo / datos de cuerpo proporcionados en el objeto NSURLRequest (si corresponde).

Cada uno de estos tipos le permite obtener los datos de respuesta de un par de formas diferentes, ya sea utilizando devoluciones de llamadas basadas en bloques o proporcionando un delegado en la sesión e implementando métodos de delegado.

Además, NSURLSession le permite proporcionar métodos delegados para manejar la autenticación, realizar el manejo personalizado del certificado TLS (tanto para certificados de cliente y validación del servidor), cambiar el comportamiento de almacenamiento en caché, etc.

SESIÓN Ejemplos relacionados