iOS Swift локальное уведомление не " выскакивает"

Я пытаюсь отправить локальное уведомление в назначенное время. Но уведомления не появляются на экране, но он показывает в Центре уведомлений, когда я проведите пальцем вниз.

Это то, чего я пытаюсь достичь, это то, что я получаю.

этот код из didFinishLaunchingWithOptions () моего AppDelegate.

    // Setup local push notifications
    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound], categories: nil))
    scheduleNotifications()

и это код для 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)
}

любая помощь будет оценили. Спасибо!

3 ответов


ваша проблема заключается в том, как вы преобразуете объект NSDateComponents в nsdate.

просто называя components.date без установки calendar на


Я получаю такое же странное поведение. Просто создал новый проект для тестирования кода.

что я заметил, когда вы меняете свой fireDate на:

notification.fireDate = NSDate(timeIntervalSinceNow: 10)             

вы получите желаемое поведение.

надеюсь, что это немного поможет!


Регистрация Настройки > YourApp > Уведомления.

Проверьте разрешения там.

enter image description here