加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 为什么只调用我的上一个本地通知函数?

发布时间:2020-12-14 04:39:37 所属栏目:百科 来源:网络整理
导读:我对 swift很新,我正在尝试调用多个函数来请求UISwitch IBAction中的本地通知.我想在某个日期发送通知 – 一年中的每个季度在第4,7,10,1个月.只有第四季度功能被调用.如何调用所有四个函数?这是我的代码: // UISwitch用于季度通知 @IBAction func quarterl
我对 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视频

编辑后更新:正如我所说的……所有通知都以“季度”作为标识符.给他们每个人一个单独的名字.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读