permission - La notificación local de iOS Swift no aparece "apareciendo"
unmutablenotificationcontent badge (3)
Compruebe Configuración> YourApp> Notificaciones .
Verificar los permisos allí.
Estoy tratando de enviar una notificación local a la hora programada. Pero las notificaciones no aparecen en la pantalla, pero se muestran en el centro de notificaciones cuando deslizo hacia abajo.
Esto es lo que intento lograr. Esto es lo que obtengo.
Este código es de myFinishLaunchingWithOptions () de mi AppDelegate.
// Setup local push notifications
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound], categories: nil))
scheduleNotifications()
Y este es el código de scheduleNotifications ()
func scheduleNotifications() {
// create a corresponding local notification
let notification = UILocalNotification()
// Get today''s date, time and year
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([NSCalendarUnit.Day, NSCalendarUnit.Month, NSCalendarUnit.Year], fromDate: NSDate())
// Sets the fire time to 2pm/1400 hours to anticipate user for lunch time
components.hour = 19
components.minute = 13
components.second = 00
notification.fireDate = components.date // Sets the fire date
notification.alertBody = "Enjoyed your lunch? Don''t forget to track your expenses!"
notification.alertAction = "Add expense"
notification.repeatInterval = NSCalendarUnit.Day // Repeats the notifications daily
UIApplication.sharedApplication().scheduleLocalNotification(notification)
}
Cualquier ayuda sería apreciada. ¡Gracias!
Obtengo el mismo comportamiento extraño. Acabo de crear un nuevo proyecto para probar tu código.
Lo que noté cuando cambiaste tu fireDate a:
notification.fireDate = NSDate(timeIntervalSinceNow: 10)
Obtendrás tu comportamiento deseado.
¡Espero que esto ayude un poco!
Su problema es la forma en que está convirtiendo el objeto NSDateComponents en un NSDate.
Simplemente llamando a components.date
sin establecer un calendar
para el objeto NSDateComponents
devolverá nil
.
Intenta usar esto en su lugar:
notification.fireDate = calendar.dateFromComponents(components)
Alternativamente, puede establecer la propiedad de calendar
en el objeto de componentes:
components.calendar = calendar
Como está estableciendo la propiedad fireDate
en el objeto de notificación en nil
, se activará inmediatamente, es decir, antes de que tenga la oportunidad de cerrar la aplicación y bloquear la pantalla. Este comportamiento está documentado en la referencia de clase UILocalNotification