Dans mon application, j'ai un aperçu d'utilisateur qui permet à l'utilisateur de choisir une heure. Actuellement dans mon code j'ai cette heure sélectionnée passée comme dateA
. J'ai ensuite bouclé tous les jours qui sont sélectionnés dans un uitableview séparé, et vérifié pour voir s'ils étaient égaux au jour d'aujourd'hui (comme mardi). Si les jours étaient les mêmes, alors une notification enverrait à l'heure sélectionnée qui a été passée comme dateA
. Cependant, lorsque j'essaie d'envoyer la notification, elle n'est pas envoyée.Planification Notification à déclencher à un moment précis - Swift
Voici un extrait de mon code montrant ce que j'ai essayé:
var dateA: Date? = nil//where selected time is kept
var weekdaysChecked = [String]()//where selected weekdays are kept
var alarms = [Alarm]() {
didSet {
tableView.reloadData()
}
}
override func viewDidLoad() {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound], completionHandler: { (didAllow, error) in
})
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "alarmCell", for: indexPath) as! DisplayAlarmCell
let row = indexPath.row
let alarm = alarms[row]
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE"//"EE" to get short style
let dayInWeek = dateFormatter.string(from: date)
if(alarms.count == 40) {
self.navigationItem.rightBarButtonItem?.isEnabled = false
tableView.reloadData()
}
cell.alarmTitle.text = alarm.alarmLabel
cell.clockTitle.text = alarm.time
for weekdays in weekdaysChecked {
if(dayInWeek == weekdays){
let content = UNMutableNotificationContent()
content.title = alarm.alarmLabel!
content.subtitle = alarm.time!
content.sound = UNNotificationSound(named: "Spaceship_Alarm.mp3")
let trigger = Calendar.current.dateComponents([.hour,.minute], from: dateA!)
let triggerNotif = UNCalendarNotificationTrigger(dateMatching: trigger, repeats: false)
let triggerRequest = UNNotificationRequest(identifier: "AlarmNotif", content: content, trigger: triggerNotif)
UNUserNotificationCenter.current().add(triggerRequest, withCompletionHandler: nil)
print("This is the correct day.")
}
}
@Rob merci pour vos commentaires. Il y a quelques heures, j'avais résolu cela, et je vais bientôt écrire ma solution. Fondamentalement, je n'avais pas d'identifiant unique qui empêchait l'envoi de notifications, ce que vous avez dit. –