我对 swift很新,我正在尝试调用多个函数来请求UISwitch IBAction中的本地通知.我想在某个日期发送通知 – 一年中的每个季度在第4,7,10,1个月.只有第四季度功能被调用.如何调用所有四个函数
// UISwitch用于季度通知
@IBAction func quarterlyFrequencyTapped(_ sender: UISwitch) { if quarterlyFrequency.isOn == true { firstQuarter(); secondQuarter(); thirdQuarter(); fourthQuarter() print("quarterly frequency is \(quarterlyFrequency.isOn)") } else { removeQuarterlyNotification() print("quaterly frequency is \(monthlyFrequency.isOn)") } }
//所有四个季度的功能
func firstQuarter() { let firstQuarterContent = UNMutableNotificationContent() firstQuarterContent.title = "First Quarter" firstQuarterContent.subtitle = "Some string" firstQuarterContent.body = "Some other string" var firstQuarterDate = DateComponents() firstQuarterDate.month = 3 firstQuarterDate.day = 11 firstQuarterDate.hour = 19 firstQuarterDate.minute = 20 let firstQuarterTrigger = UNCalendarNotificationTrigger(dateMatching: firstQuarterDate, repeats: true) let firstQuarterRequestIdentifier = "Quarterly" let firstQuarterRequest = UNNotificationRequest(identifier: firstQuarterRequestIdentifier, content: firstQuarterContent, trigger: firstQuarterTrigger) UNUserNotificationCenter.current().add(firstQuarterRequest, withCompletionHandler: nil) } func secondQuarter() { let secondQuarterContent = UNMutableNotificationContent() secondQuarterContent.title = "Second Quarter" secondQuarterContent.subtitle = "Some string" secondQuarterContent.body = "Some other string" var secondQuarterDate = DateComponents() secondQuarterDate.month = 3 secondQuarterDate.day = 11 secondQuarterDate.hour = 19 secondQuarterDate.minute = 21 let secondQuarterTrigger = UNCalendarNotificationTrigger(dateMatching: secondQuarterDate, repeats: true) let secondQuarterRequestIdentifier = "Quarterly" let secondQuarterRequest = UNNotificationRequest(identifier: secondQuarterRequestIdentifier, content: secondQuarterContent, trigger: secondQuarterTrigger) UNUserNotificationCenter.current().add(secondQuarterRequest, withCompletionHandler: nil) } func thirdQuarter() { let thirdQuarterContent = UNMutableNotificationContent() thirdQuarterContent.title = "Third Quarter" thirdQuarterContent.subtitle = "Some string" thirdQuarterContent.body = "Some other string" var thirdQuarterDate = DateComponents() thirdQuarterDate.month = 3 thirdQuarterDate.day = 11 thirdQuarterDate.hour = 19 thirdQuarterDate.minute = 22 let thirdQuarterTrigger = UNCalendarNotificationTrigger(dateMatching: thirdQuarterDate, repeats: true) let thirdQuarterRequestIdentifier = "Quarterly" let thirdQuarterRequest = UNNotificationRequest(identifier: thirdQuarterRequestIdentifier, content: thirdQuarterContent, trigger: thirdQuarterTrigger) UNUserNotificationCenter.current().add(thirdQuarterRequest, withCompletionHandler: nil) } func fourthQuarter() { let fourthQuarterContent = UNMutableNotificationContent() fourthQuarterContent.title = "Fourth Quarter" fourthQuarterContent.subtitle = "Some string" fourthQuarterContent.body = "Some other string" var fourthQuarterDate = DateComponents() fourthQuarterDate.month = 3 fourthQuarterDate.day = 11 fourthQuarterDate.hour = 19 fourthQuarterDate.minute = 23 let fourthQuarterTrigger = UNCalendarNotificationTrigger(dateMatching: fourthQuarterDate, repeats: true) //let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true) let fourthQuarterRequestIdentifier = "Quarterly" let fourthQuarterRequest = UNNotificationRequest(identifier: fourthQuarterRequestIdentifier, content: fourthQuarterContent, trigger: fourthQuarterTrigger) UNUserNotificationCenter.current().add(fourthQuarterRequest, withCompletionHandler: nil) }我认为你在iOS10上,你正在使用UserNotifications框架吗?
您的标识符很可能具有相同的标识符,并且每个标识符都会更新以前的通知.
原因标识符用于帮助您更新具有相同标识符的先前通知.例如,您发送通知以将分数从0-0更新为0-1.而不是在屏幕上有2个通知,你现在只有一个.
您的修复是为每个使用不同的标识符.
有关更多信息,请参阅此moment以获取WWDC视频
编辑后更新:正如我所说的……所有通知都以“季度”作为标识符.给他们每个人一个单独的名字.