Notificación local para la fecha y hora específica no está funcionando. Rápido

votos
0

Estoy tratando de activar una notificación local en una fecha y hora específicas en el botón de clic, pero no está funcionando. A continuación se muestra el código:

@IBAction func setReminderBtnPressed (_ sender: UIButton) {
    var dateString = String()
    dateString = 2018-10-20 18:11:00
    //let date = Date(timeIntervalSinceNow: 60) //Working Fine
    let date = globalMethods.convertStringToDate(dateStr: dateString) //log 2018-10-20 10:11:00 +0000 
    let content = UNMutableNotificationContent()
    content.title = Don't forget
    content.body = Buy some milk
    content.sound = UNNotificationSound.default()
    let triggerDate = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date) //log ▿ year: 2018 month: 10 day: 20 hour: 18 minute: 11 second: 0 isLeapMonth: false
    let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: false)
    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
    UNUserNotificationCenter.current().add(request, withCompletionHandler: { (error) in
        if let error = error {
            // Something went wrong
            print(error)
        }
    })
}

func convertStringToDate(dateStr: String) -> Date {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = yyyy-MM-dd HH:mm:ss
    dateFormatter.timeZone = TimeZone.current// (abbreviation: GMT+0:00)
    let dateFromString = dateFormatter.date(from: dateStr)
    print(dateFromString: , dateFromString!)
    return dateFromString!
}

Gracias por adelantado.

Publicado el 20/10/2018 a las 10:36
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Asegúrese de que usted ha autorizado la aplicación para enviar notificaciones al usuario.

En su AppDelegate 's application(_:didFinishLaunchingWithOptions:)solicitud, para la autorización:

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (success, error) in
    if let error = error {
        debugPrint("Error: \(error)")
    }
}
UNUserNotificationCenter.current().delegate = self

Y, a confirmar UNUserNotificationCenterDelegateen su AppDelegate , y poner en práctica el método:

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

    completionHandler(.alert)
}
Respondida el 20/10/2018 a las 16:46
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more