Consumo de Servicios Web en iOS con URL Session
Clase 15 de 52 • Curso de Desarrollo de Apps para iOS
Contenido del curso
- 4

Creación de la primera app iOS con Xcode: Login de Facebook
09:02 - 5

Navegación entre pantallas en iOS con UI Navigation Controller
05:49 - 6

Creación y conexión de múltiples storyboards en iOS
06:14 - 7

Conexiones IBOutlets y IBActions en iOS con Storyboards
11:00 - 8

Comparativa: Auto Layout vs SwiftUI en Desarrollo iOS
02:48 - 9

Auto Layout en iOS: Diseño Responsivo con Constraints y StackViews
11:10 - 10

Creación y configuración de tablas en iOS con Swift
12:49 - 11

Creación de celdas personalizadas en TableView de iOS
14:00 - 12

Persistencia de Datos en iOS con UserDefaults
11:09
- 19

Desarrollo de "Platzi Tweets": Red Social iOS Realista
02:24 - 20

Configuración Inicial de Proyecto iOS con CocoaPods
06:18 - 21

Diseño de Pantallas de Bienvenida, Inicio de Sesión y Registro en iOS
13:06 - 22

Controladores y validaciones en pantallas de registro y login
12:22 - 23

Validación y Conexiones en Login y Registro iOS
10:01 - 24
Modelado de Endpoints y JSON para API de PlatziTweets
01:44 - 25

Integración de Autenticación con API de Platzi Tweets
09:37 - 26

Desarrollo de Registro y Autenticación en Aplicaciones iOS
06:47 - 27

Diseño de Interfaces para Aplicaciones iOS: Creación de Celdas Personalizadas
12:37 - 28

Consumo de API para mostrar tweets en iOS
12:43 - 29

Diseño de Pantalla para Crear y Publicar Tweets en iOS
11:06 - 30

Conexión de Pantalla de Publicación con Servicios de Platzi Tweets
09:11 - 31

Borrado de Tweets Propios en iOS usando Swipe en UITableView
12:21 - 32

Uso de la Cámara del iPhone para Adjuntar Fotos en Posts
10:40 - 33
Conexión de Aplicaciones iOS con Firebase paso a paso
02:26 - 34

Configuración de iPhone y X-Code para ejecución de apps
04:45 - 35

Subida de Fotos a Firebase y Publicación en Twitter
13:38 - 36

Configuración de Post con Imagen en Firebase
03:13 - 37

Captura y Publicación de Videos en iOS con Firebase
09:17 - 38

Subida de Videos a Firebase e Integración en Posts de iOS
14:41 - 39

Configuración de Celdas para Reproducción de Videos en iOS
07:58 - 40

Acceso al GPS y almacenamiento de coordenadas en iOS
09:43 - 41

Integración de Mapas en iOS con Coordenadas de Usuario
11:29 - 42

Marcadores y Configuración de Mapas en iOS con Swift
14:11 - 43

Mejoras avanzadas en UI y UX para iOS Developer
01:28
¿Por qué es crucial aprender a consumir servicios web en desarrollo móvil?
El consumo de servicios web es un pilar fundamental en el desarrollo móvil. Constituye la base para realizar acciones como iniciar sesión, registrarse, manipular datos de redes sociales como Facebook, y en definitiva, interactuar con la nube o red. En este ámbito, Apple proporciona la clase URLSession como herramienta nativa para facilitar esta tarea. Al dominar su uso, los desarrolladores pueden construir aplicaciones más potentes y conectadas.
¿Cómo comenzar con URL Session en un proyecto de Xcode?
Para ilustrar el uso de URLSession, vamos a crear un proyecto en Xcode llamado "Aprendiendo Servicios", incluyendo algunos elementos en la interfaz de usuario:
- Agregar elementos de interfaz:
- Un
UILabelpara mostrar información. - Un
UIActivityIndicatorViewpara indicar la carga de datos al usuario. - Otro
UILabelconfigurado para mostrar el estado, cada uno con sus respectivas restricciones (Constraint) para asegurar la correcta visualización.
- Un
Estos elementos nos permitirán representar visualmente los resultados de consumir un servicio web.
¿Cómo conectar outlets de manera eficiente en Xcode?
Al conectar elementos de UI con el código, se recomienda crear outlets de forma manual en el ViewController. Una manera efectiva es utilizar el Connections Inspector para conectar directamente desde el controlador a la interfaz gráfica sin necesidad de dividir la pantalla, simplificando el proceso de vínculo.
Código de ejemplo para crear outlets:
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var statusLabel: UILabel!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
¿Cómo gestionar excepciones de seguridad y endpoints?
Al trabajar con servicios web en iOS, es esencial establecer excepciones de seguridad, ya que las aplicaciones suelen restringir conexiones a dominios que no son HTTPS por defecto.
- Configurar excepciones de seguridad:
- Editar el archivo
info.plistdel proyecto para configurar dominios permitidos. - Añadir un bloque XML para definir excepciones específicas, asegurando que las solicitudes web no seguras sean manejadas adecuadamente.
- Editar el archivo
Ejemplo de configuración en info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>mymockapi.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
- Crear la URL del endpoint:
- Definir un
guard letpara la URL asegurando que sea válida antes de proseguir con la llamada al servicio.
- Definir un
Ejemplo de código para crear la URL:
guard let endpoint = URL(string: "https://mymockapi.com/data.json") else { return }
¿Cómo consumir un servicio web con URLSession?
El consumo de servicios web implica configurar URLSession para realizar solicitudes:
- Utilizar
URLSession:- Invocar
URLSession.sharedpara acceder a una instancia compartida. - Utilizar
dataTaskpara realizar la solicitud y recibir datos asíncronamente.
- Invocar
Código para consumir un servicio:
URLSession.shared.dataTask(with: endpoint) { data, response, error in
if let error = error {
print("Hubo un error: \(error)")
return
}
guard let data = data else { return }
do {
if let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
DispatchQueue.main.async {
self.nameLabel.text = json["name"] as? String
}
}
} catch {
print("Error al deserializar JSON: \(error)")
}
}.resume()
¿Qué hacer cuando los datos no se actualizan en la UI?
Si tras consumir el servicio los elementos de UI no reflejan cambios, podrías estar enfrentando un problema de actualización de interfaz en el hilo principal. Cualquier cambio en la interfaz de usuario debe realizarse dentro del hilo principal usando DispatchQueue.main.async.
¡Continúa explorando y experimentando con diferentes configuraciones y servicios! La práctica constante te convertirá en un experto en consumir servicios web para aplicaciones móviles.