scheduleLocalNotification не работает в Swift 2.0

Я новичок в технологиях iOS. Я пытаюсь создать приложение для будильника с Swift 2.0, используя UILocalNotification. Когда я нажимаю кнопку, я получаю время и дату из UIPickerView. Я хочу отображать уведомления и воспроизводить звук. Но и звук, и уведомление не работают. Помогите, пожалуйста!

@IBOutlet weak var myPickerView: UIDatePicker!

override func viewDidLoad() {
    super.viewDidLoad()
    myPickerView.date = NSDate()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


@IBAction func setAlarmClicked(sender: UIButton) {
    let dateFormater : NSDateFormatter = NSDateFormatter()
    dateFormater.timeZone = NSTimeZone.defaultTimeZone()
    dateFormater.timeStyle = .ShortStyle
    dateFormater.dateStyle = .ShortStyle

    let dateTimeString : NSString = dateFormater.stringFromDate(myPickerView.date)
    print("date is \(dateTimeString)")

    self.sheduleLocalNotificationWithDate(myPickerView.date)
}

@IBAction func cancelAlarmClicked(sender: UIButton) {

}

func sheduleLocalNotificationWithDate(fireDate : NSDate){
    let localNotification : UILocalNotification = UILocalNotification()
    localNotification.fireDate = fireDate
    localNotification.alertBody = "Alert !!!!"
    localNotification.soundName = "minion.mp3"

    UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

}

person Inuyasha    schedule 18.02.2016    source источник


Ответы (1)


Вы должны зарегистрироваться для получения локальных уведомлений. Добавьте это в свой контроллер представления:

override func viewDidAppear() {

    super.viewDidAppear()
    let settings = UIUserNotificationSettings(forTypes: [.Badge, .Sound, .Alert], categories: nil)
    UIApplication.sharedApplication().registerUserNotificationSettings(settings)

}

Предупреждение появится, когда ваше представление появится в первый раз, нажмите «ОК», и ваши уведомления должны работать. Помните, что пользователь всегда может отключить уведомления.

person tktsubota    schedule 18.02.2016
comment
@lnuyasha Если вы имеете в виду, что уведомление все равно будет срабатывать, то да. - person tktsubota; 18.02.2016
comment
Это рабочий поиск, работает ли приложение в фоновом режиме или завершено. Но если я все еще запускаю его на переднем плане, это не сработает. Вы знаете почему? - person Inuyasha; 18.02.2016
comment
@Inuyasha Да, уведомления не появляются, когда ваше приложение находится на переднем плане. К сожалению, вы должны реализовать собственный способ сделать это. Существует метод делегата приложения application:didReceiveLocalNotification:, в котором вы можете выполнять любой код переднего плана. Однако этот метод делегата не вызывается, когда ваше уведомление срабатывает в фоновом режиме. - person tktsubota; 18.02.2016