使用开关启用和禁用本地通知(swift 3)

Posted

技术标签:

【中文标题】使用开关启用和禁用本地通知(swift 3)【英文标题】:Using a switch to enable and disable local notifications (swift 3) 【发布时间】:2017-05-31 01:25:17 【问题描述】:

我正在制作我的第一个应用,其中一个功能是待办事项列表。我有一个开关,当它关闭时禁用本地通知,当它打开时,只要开关打开,它就应该启用它们。我使用UserDefaults 保存开关状态,通知确实出现了,但是,即使我指定它们应该重复,它们也不会重复。现在,我将通知设置为每 60 秒重复一次以进行测试,但当它起作用时将需要两天时间。只要开关打开,我怎样才能让通知重复?我的开关代码:

@IBOutlet weak var switchout: UISwitch!

@IBAction func notifswitch(_ sender: Any) 
print ("hello")
    if switchout.isOn
    
        if #available(ios 10.0, *), list.isEmpty == false 

            let content = UNMutableNotificationContent()
            content.title = "You have tasks to complete!"
            content.subtitle = ""
            content.body = "Open the task manager to see which tasks 
need completion"
            let alarmTime = Date().addingTimeInterval(60) 
            let components = Calendar.current.dateComponents([.weekday, 
.hour, .minute], from: alarmTime)
            let trigger = UNCalendarNotificationTrigger(dateMatching: 
components, repeats: true)
            let request = UNNotificationRequest(identifier: 
"taskreminder", content: content, trigger: trigger)
            UNUserNotificationCenter.current().add(request, 
withCompletionHandler: nil)
         else 
            print ("hello")
        

     else
    
        UIApplication.shared.cancelAllLocalNotifications()
    

    self.saveSwitchesStates()

【问题讨论】:

【参考方案1】:

我怀疑您使用了错误的取消 API。

代替:

UIApplication.shared.cancelAllLocalNotifications()

尝试使用:

UNUserNotificationCenter.current().removeAllPendingNotificationRequests()

不过,这会取消您应用的所有内容。如果你想做特定的通知,你可以这样做:

UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: "taskreminder")

更多信息can be seen at this closely related question。

2)

现在关于您的通知不重复,即使您在设置触发器时设置了true,我看到您设置的时间需要匹配[.weekday, .hour, .minute],这意味着它将在同一时间重复一周中的每一天。

尝试将 THIS 传递给 UNNotificationRequest

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true)

【讨论】:

好的,我会尝试添加。但是如何解决通知不重复的问题?

以上是关于使用开关启用和禁用本地通知(swift 3)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中禁用/启用本地通知?

怎么在linux 系统下,禁用和启用网卡,并看状态,比如像WINDOW XP 下 本地连接,禁用,启用,连接状态,

怎么在linux 系统下,禁用和启用网卡,并看状态,比如像WINDOW XP 下 本地连接,禁用,启用,连接状态,

如何在swift 3中每天在特定时间触发本地通知

iOS - 根据切换值启用/禁用一组通知

在 iPhone 上确定用户是不是启用了本地通知