Notificaciones Locales en iOS: Configuración y Programación

Clase 23 de 31Curso de Integración Nativa iOS

Resumen

¿Cómo funcionan las notificaciones en una aplicación iOS?

Las notificaciones son una herramienta esencial en el desarrollo de aplicaciones, permitiendo enviar mensajes e información directamente al usuario. Existen dos tipos principales: las notificaciones locales y las push notifications. Aquí nos centraremos en las notificaciones locales, fundamentales para alertar al usuario sobre distintos eventos sin necesidad de conexión a internet.

¿Cómo configurar el Notification Manager?

Para gestionar las notificaciones locales, primero debemos crear un administrador de notificaciones. Este se encarga de crear y configurar las notificaciones que necesitan ser lanzadas.

  1. Creación del Notification Manager:

    • Dentro de la carpeta services, creamos un archivo llamado notification_manager.swift.
    • Importamos la clase UserNotifications para manejar las notificaciones.
    • Creamos una instancia compartida (singleton) que facilita el acceso:
    static let shared = NotificationManager()
    
  2. Solicitar permisos al usuario:

    • Antes de lanzar notificaciones, es crucial solicitar permisos al usuario, dado que las notificaciones son intrusivas.
    • Implementamos la función requestPermission:
    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
        if let error = error {
            print("Error al solicitar permiso: \(error.localizedDescription)")
        } else {
            print(granted ? "Permiso concedido" : "Permiso denegado")
        }
    }
    
  3. Modificar archivo de configuración:

    • En el archivo de configuración del proyecto Info.plist, añadimos un permiso explicando la necesidad de enviar notificaciones:
    <key>NSUserNotificationUsageDescription</key>
    <string>Se solicita enviar notificaciones al usuario para alertar acerca de una acción.</string>
    

¿Cómo programar una notificación local?

Una vez configurados los permisos y el administrador, seguimos hacia la programación de las notificaciones.

  1. Definir el contenido de la notificación:

    • Internamente, creamos una función programarNotificacion que establecerá los detalles de la notificación:
    let content = UNMutableNotificationContent()
    content.title = "Hola desde mi aplicación"
    content.body = "Este es el contenido de la notificación para el curso de iOS."
    content.sound = UNNotificationSound.default
    
  2. Configurar el trigger o lanzamiento:

    • Determinamos cuándo se lanzará la notificación:
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
    
  3. Crear y añadir la solicitud:

    • Creamos una solicitud para el centro de notificaciones:
    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
    UNUserNotificationCenter.current().add(request) { error in
        if let error = error {
            print("Error al programar la notificación: \(error.localizedDescription)")
        } else {
            print("Notificación programada con éxito")
        }
    }
    

¿Cómo se implementa la interfaz para las notificaciones?

Finalmente, integramos los controles necesarios en la interfaz de usuario para ejecutar las notificaciones.

  1. Diseño de interfaz en SwiftUI:

    • En la vista donde se manejarán las notificaciones, añadimos los botones necesarios:
    VStack {
        Text("Notificaciones en SwiftUI")
            .font(.largeTitle)
            .padding()
        
        Button(action: {
            NotificationManager.shared.requestPermission()
        }) {
            Text("Solicitar Permiso")
                .foregroundColor(.white)
                .padding()
                .background(Color.blue)
                .cornerRadius(8)
        }
        
        Button(action: {
            NotificationManager.shared.programarNotificacion()
        }) {
            Text("Programar Notificación")
                .foregroundColor(.white)
                .padding()
                .background(Color.blue)
                .cornerRadius(8)
        }
    }
    
  2. Ejecución en dispositivos reales:

    • Debido a limitaciones del simulador iOS para mostrar notificaciones, la funcionalidad debe probarse en dispositivos físicos para observar el comportamiento real.

Implementando estas pautas, podrás integrar notificaciones locales eficientemente en tu aplicación iOS. Le informan al usuario sobre eventos importantes, brindando una experiencia de usuario mejorada y aplicando las mejores prácticas de desarrollo. Continúa explorando las características avanzadas de Swift y iOS para maximizar el potencial de tus aplicaciones.