通知未在模拟器或iOS 11设备中触发

时间:2017-12-21 22:26:49

标签: ios swift notifications

我有一个应用程序,允许我添加通知,并在每天同时重复(例如,服用此药)

它是一个视图控制器,带有文本字段和按钮,用于在顶部添加信息,下面的表格视图显示已安排的通知。

我决定添加另一个视图控制器以允许用户编辑通知,因此我从视图控制器A中删除了文本字段,并将其添加到视图控制器B中,并使用按钮添加通知。但现在该应用程序无法正常工作,我无法收到通知。所以我的猜测是错误可能是我来回传递数据时。

当我加载视图A时,它会使用此函数加载通知:

func reloadDataAlarms() {
        self.alarms = []
        if let savedReminders = loadReminders() {

            self.alarms += savedReminders
        }
    }

func loadReminders() -> [Reminder]? {
        return NSKeyedUnarchiver.unarchiveObject(withFile: Reminder.ArchiveURL!) as? [Reminder]
    } 

但是因为表格应该填充,所以加载似乎没有问题。然后我使用一个没有发送任何信息的普通按钮seg来查看控制器B,但我再次运行与上面相同的代码来加载提醒数组。

当用户点击保存按钮时,我运行此功能:

func alertDayly(nameS: String, timeS: Date) {
    let name = nameS
    let time = timeS
    let calendar = NSCalendar.current
    let hourComp = calendar.dateComponents([.hour, .minute], from: time)
    var dateComp = DateComponents()
    dateComp.hour = hourComp.hour
    dateComp.minute = hourComp.minute
    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComp, repeats: true)
    let notifications = UNMutableNotificationContent()
    notifications.title = "Recordatorio"
    notifications.body = name
    notifications.sound = UNNotificationSound.default()


    let request = UNNotificationRequest(identifier: "notification", content: notifications, trigger: trigger)
    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

    reminder = Reminder(name: name, time: time as NSDate, notification: notifications)
    alarms.append(reminder!)

    saveReminders()

    datePickerTxt.text = ""
    addComent.text = ""

    view.endEditing(true)

    createActionAlert()


}

哪个结束运行此函数返回原始视图。

func createActionAlert() {

        let refreshAlert = UIAlertController(title: "Guardado", message: "Recordatorio creado", preferredStyle: UIAlertControllerStyle.alert)

        refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
            self.navigationController?.popViewController(animated: true)   
        }))

        present(refreshAlert, animated: true, completion: nil)

    }

然后在视图控制器A中,我在viewWillAppear中运行`reloadDataAlarms()函数来获取将填充表视图的数组。

Al数据在表格视图中正确显示,但通知从未发出声音。而且我在没有视图A /视图B分离的情况下运行相同的代码并且它工作正常,那么我做错了什么?是否有任何特殊注意事项,因为我使用另一个控制器来保存新通知?感谢

0 个答案:

没有答案