es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo programar una notificación local que se repita en un intervalo de tiempo específico.

Quiero programar una notificación local para cada diferencia de 3 horas. Pero con una limitación, esto debe ser entre las 7AM – 10PM.

Código para programarlo.

let user = UNUserNotificationCenter.current()

let content = UNMutableNotificationContent()
content.title = "Notificación Local"
content.body = "Prueba."

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (36060), repeats: true)

let request = UNNotificationRequest(identifier: "id", content: content, trigger: trigger)

user.add(request) { (error) in print("Error")}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para configurar notificaciones locales con la limitación de permitir solo programar notificaciones entre las 7AM y las 10PM, con un intervalo de 3 horas, se debe utilizar un disparador modificado con DateComponents y Calendar.

    Aquí está el código para implementarlo:

    let userNotificationCenter = UNUserNotificationCenter.current()
    let content = UNMutableNotificationContent()
    
    content.title = "Notificación Local"
    content.body = "Prueba"
    
    // Especificar la hora en la que se pueden programar las notificaciones
    let date = Date()
    let calendar = Calendar(identifier: .gregorian)
    let startDate = calendar.date(bySettingHour: 7, minute: 0, second: 0, of: date)!
    let endDate = calendar.date(bySettingHour: 22, minute: 0, second: 0, of: date)!
    
    // Crear un disparador que se repite cada tres horas entre las 7AM y las 10PM
    var dateComponents = DateComponents()
    dateComponents.calendar = calendar
    dateComponents.hour = 3
    let randomNumberOfMinutes = Int.random(in: 0...60)
    dateComponents.minute = randomNumberOfMinutes
    
    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
    trigger.nextTriggerDate() // Asegúrese de que el disparador programe las notificaciones en el período de tiempo especificado.
    
    // Programar la solicitud de notificación
    let request = UNNotificationRequest(identifier: "id", content: content, trigger: trigger)
    userNotificationCenter.add(request) { error in 
      if let error = error {
        print("Error: \(error.localizedDescription)")
      }
    }
    

    Esto configura un horario en el que la notificación es aleatoria, con la hora configurada cada 3 horas dentro del rango de tiempo de 7AM-10PM.

    Nota: Es posible que no siempre sea posible programar un disparador dentro del rango de tiempo específico debido a los minutos aleatorios durante la programación inicial.

Comments are closed.