Hola, Apple

1

Desarrollo de Apps para iOS: Historia y Oportunidades

2

Instalación y configuración inicial de Xcode para iOS

3

Requisitos para Desarrollar Apps iOS Sin iPhone

Tu primera app en iOS

4

Creación de la primera app iOS con Xcode: Login de Facebook

5

Navegación entre pantallas en iOS con UI Navigation Controller

6

Creación y conexión de múltiples storyboards en iOS

7

Conexiones IBOutlets y IBActions en iOS con Storyboards

8

Comparativa: Auto Layout vs SwiftUI en Desarrollo iOS

9

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

10

Creación y configuración de tablas en iOS con Swift

11

Creación de celdas personalizadas en TableView de iOS

12

Persistencia de Datos en iOS con UserDefaults

Manejo de dependencias

13

Gestión de Dependencias en iOS con CocoaPods

14

Manejo de dependencias en iOS con Kardash y CocoaPods

Servicios Web

15

Consumo de Servicios Web en iOS con URL Session

16

Consumo de Servicios Web en iOS con URLSession

17

Serialización de JSON a Modelos en Swift 5 con Codable

18

Uso de Alamofire para Networking en iOS

Proyecto: PlatziTweets

19

Desarrollo de "Platzi Tweets": Red Social iOS Realista

20

Configuración Inicial de Proyecto iOS con CocoaPods

21

Diseño de Pantallas de Bienvenida, Inicio de Sesión y Registro en iOS

22

Controladores y validaciones en pantallas de registro y login

23

Validación y Conexiones en Login y Registro iOS

24

Modelado de Endpoints y JSON para API de PlatziTweets

25

Integración de Autenticación con API de Platzi Tweets

26

Desarrollo de Registro y Autenticación en Aplicaciones iOS

27

Diseño de Interfaces para Aplicaciones iOS: Creación de Celdas Personalizadas

28

Consumo de API para mostrar tweets en iOS

29

Diseño de Pantalla para Crear y Publicar Tweets en iOS

30

Conexión de Pantalla de Publicación con Servicios de Platzi Tweets

31

Borrado de Tweets Propios en iOS usando Swipe en UITableView

32

Uso de la Cámara del iPhone para Adjuntar Fotos en Posts

33

Conexión de Aplicaciones iOS con Firebase paso a paso

34

Configuración de iPhone y X-Code para ejecución de apps

35

Subida de Fotos a Firebase y Publicación en Twitter

36

Configuración de Post con Imagen en Firebase

37

Captura y Publicación de Videos en iOS con Firebase

38

Subida de Videos a Firebase e Integración en Posts de iOS

39

Configuración de Celdas para Reproducción de Videos en iOS

40

Acceso al GPS y almacenamiento de coordenadas en iOS

41

Integración de Mapas en iOS con Coordenadas de Usuario

42

Marcadores y Configuración de Mapas en iOS con Swift

43

Mejoras avanzadas en UI y UX para iOS Developer

En producción

44

Distribución de Aplicaciones con Firebase App Distribution

45

Distribución de aplicaciones iOS con TestFlight de Apple

46

Publicación de Apps en TestFlight y App Store con Apple

iOS Avanzado

47

Implementación de Dark Mode en Aplicaciones iOS

48

Creación de Interfaces Básicas con SwiftUI en iOS

49

Reutilización de Componentes en SwiftUI: Creación de un Login Personalizado

50

Desarrollo de Apps iOS con Objective-C: Proyecto Básico de Tabla

Hola, iOS Developer

51

Desarrollo de Aplicaciones iOS con Proyecto Final

52

Desarrollo de Aplicaciones en iOS: Sesión Avanzada

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Conexión de Pantalla de Publicación con Servicios de Platzi Tweets

30/52
Recursos

¿Cómo conectar la pantalla de publicación de tweets con los servicios de Platzi Tweets?

Cuando desarrollamos aplicaciones móviles, es esencial conectar las interfaces de usuario con los servicios que gestionan la lógica del negocio. Esta tarea asegura que los datos fluyan correctamente entre la interfaz y el backend, permitiendo funcionalidades como la publicación de tweets en nuestra app de Platzi Tweets. Vamos a explorar cómo lograr esta conexión de manera efectiva.

¿Cómo realizar una solicitud de post?

Para guardar un post o publicación, primero debemos crear una solicitud al backend. Este proceso incluye:

  1. Creación de una 'request': Debemos crear una instancia de post request usando los modelos predefinidos, donde cada publicación puede incluir texto, una URL de imagen, una URL de video y una ubicación.

  2. Definición del texto del tweet: El contenido de nuestro tweet provendrá del componente post text view. Aquí es vital realizar una validación para evitar posts vacíos.

    let request = PostRequest(text: postTextView.text, imageURL: nil, videoURL: nil, location: nil)
    

¿Cómo se notifica al usuario la carga del tweet?

La experiencia del usuario mejora significativamente cuando se proporciona feedback visual del estado de una tarea en progreso, como la publicación de un tweet. En este caso:

  • Utilizamos SVProgressHUD para indicar el proceso de carga.

    SVProgressHUD.show()
    

¿Cómo se llama al servicio para publicar el tweet?

Una vez que tenemos la solicitud lista y la carga es visible para el usuario, procedemos a acceder al servicio que gestionará la publicación:

  • Uso de SimpleNetworking: Esto facilita la interacción con el servicio de backend.

    SN.post(endpoint: Endpoints.post, model: request) { (response) in
        switch response {
        case .success(let post):
            // Post publicado correctamente
        case .failure(let errorResponse):
            // Error en la publicación
        }
        SVProgressHUD.dismiss()
    }
    

¿Cómo cerrar la pantalla y actualizar el feed?

Cuando el servicio confirma una publicación exitosa:

  • Cerrar pantalla actual: Se utiliza el método dismiss para retornar al home después de un post exitoso.

    self.dismiss(animated: true, completion: nil)
    
  • Actualizar el feed al regresar: Es importante que el feed se actualice automáticamente cuando el usuario regresa al home.

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        self.fetchPosts()
    }
    

Ajustes para una actualización eficiente y continua

Es crucial que la pantalla principal se recargue adecuadamente después de publicar un tweet. Una solución efectiva es cambiar la modalidad de presentación de las pantallas:

  • Cambiar esta presentación a fullScreen asegura que el home se actualice adecuadamente cuando reaparece.

¿Qué deberíamos probar y ajustar?

Realizar pruebas exhaustivas del flujo de publicación ayudará a identificar y corregir cualquier error en la lógica o el comportamiento de la app, asegurando así una experiencia de usuario fluida.

¡Eso es todo! Espero que este proceso te resulte de gran interés y utilidad para tus proyectos. Anímate a experimentar y mejorar las funcionalidades en las aplicaciones que desarrolles. Y recuerda, la práctica hace al maestro. ¡Nos vemos en la próxima clase!

Aportes 5

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

![](

Logrado !!! 😄

Para agregarle un Switch de recordar email:

@IBOutlet weak var emailSwitch: UISwitch! //Agregamos y conectamos el Switch

private let emailKey = "email-key" // Declaramos un key
private let storage = UserDefaults.standard //Llamamos al método del UserDefaults

saveEmail() //Creamos y llamamos un método en el viewDidLoad

//Agregamos la condicional en el Success del login
if self.emailSwitch.isOn {
self.storage.set(email, forKey: emailKey)
} else {
self.storage.removeObject(forKey: emailKey)
}

//Función de guardar email.
private func saveEmail(){
if let storedEmail = storage.string(forKey: emailKey){
emailTextField.text = storedEmail
emailSwitch.isOn = true
} else {
storage.removeObject(forKey: emailKey)
emailSwitch.isOn = false
}
}

Agruege este campo de codigo para validar si contiene texto el campo o no


        guard let postText = postTextView.text,
              !postText.isEmpty else
        {
            NotificationBanner(subtitle: "Tu campo de texto esta vacio", style: .warning).show()
            
            return
        }