Subida de Fotos a Firebase y Publicación en Twitter

Clase 35 de 52Curso de Desarrollo de Apps para iOS

Resumen

¿Cómo se configura Firebase para subir fotos desde la aplicación?

Configurar Firebase para almacenar y gestionar imágenes desde tu aplicación móvil no es complicado. El primer paso es acceder a tu cuenta de Firebase y seleccionar la sección de "Storage". Firebase te guiará en la configuración inicial, incluyendo la selección del servidor de almacenamiento. Debes modificar las reglas de seguridad temporalmente permitiendo el acceso no autenticado, esto se hace cambiando la condición de las reglas de seguridad.

if request.auth != null  // Cambia esto a
if request.auth == null  // Para permitir el acceso no autenticado.

Esta modificación es solo mientras realizas las pruebas iniciales; posteriormente es vital asegurarse de que las reglas de seguridad sean estrictas para proteger la privacidad y seguridad de los datos de los usuarios.

¿Cómo subir una foto a Firebase desde la aplicación?

En el módulo de creación de publicaciones de tu app, primero verifica que hay una imagen en el previsualizador (previewImageView). Luego, convierte la imagen a un formato de datos comprimido para mejorar la velocidad de subida y reducir el tamaño de almacenamiento.

guard let imageSaved = previewImageView.image else { return }
guard let imageData = imageSaved.jpegData(compressionQuality: 0.1) else { return }

Prosigue creando la configuración necesaria para almacenar la imagen en Firebase, como el tipo de contenido (imagen JPG) y genera un nombre único para cada archivo ("imageName") que se suba, evitando así sobrescribir archivos existentes.

let storageMetaData = StorageMetadata()
storageMetaData.contentType = "image/jpeg"

let storageRef = Storage.storage().reference()
let imageName = "\(Int.random(in: 100...1000)).jpg"
let folderReference = storageRef.child("tweetsImages/\(imageName)")

La función PUTDATA permite subir la imagen en un hilo secundario para no bloquear la interfaz de usuario mientras se realiza la operación.

DispatchQueue.global(qos: .background).async {
    folderReference.putData(imageData, metadata: storageMetaData) { metadata, error in
        DispatchQueue.main.async {
            if let error = error {
                print("Error al subir la foto: \(error.localizedDescription)")
                return
            }
            folderReference.downloadURL { url, error in
                guard let downloadURL = url else { return }
                print("URL de descarga: \(downloadURL.absoluteString)")
            }
        }
    }
}

¿Qué hacer después de subir la foto a Firebase?

Una vez que la imagen se ha subido correctamente y tienes la URL de descarga, puedes proceder a incorporarla en el contenido de un post dentro de la aplicación. Previo a ello, asegúrate de manejar y mostrar correctamente cualquier posible error al usuario. Es crucial devolver el control a la interfaz principal una vez que la operación asíncrona se completa, para ofrecer una experiencia de usuario fluida:

  • Para manejar errores, utiliza banners de notificación que muestren el mensaje de error específico.
  • En caso de éxito, imprime la URL de descarga en la consola como comprobación preliminar.

Finalmente, recuerda que el entorno del desarrollo es dinámico: mantén hábitos de documentación y consulta continua de las actualizaciones en Firebase para asegurar que tu implementación siga las mejores prácticas. Como consejo, aprovecha los recursos descargables del curso para orientarte adecuadamente y personalizar tu aplicación según tus necesidades de desarrollo.