不断设置新的本地通知 - ios
continuously setting new local notification - ios
我正在模拟警报。
为了做到这一点,我尝试在某些条件为真时每 X 秒发送一次新的本地通知,并在某些条件为假时停止(当用户取消警报时)
我有一个 Set
按钮和一个 Stop
按钮。
以下代码适用于按下 Set
按钮时的代码:
@IBAction func setNotification(_ sender: Any) {
// timeEntered = time.text!
// let hrMin = timeEntered.components(separatedBy: ":");
let content = UNMutableNotificationContent()
content.title = "How many days are there in one year"
content.subtitle = "Do you know?"
content.body = "Do you really know?"
content.badge = 1
content.sound = UNNotificationSound(named: "alarm.aiff");
while (repeatNotifications) {
trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false);
let request = UNNotificationRequest(identifier: "timerDone", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
}
按下 Stop
按钮时:
@IBAction func stopRepeat(_ sender: Any) {
repeatNotifications = false
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
}
现在,当我按下 Set
按钮时,它停留在按下模式(它的颜色发生变化),除了主页按钮。另外,没有设置本地通知。
有什么想法可以实现吗?
tl;dr:如何每隔 X 秒设置一次新的本地通知,直到按下某个按钮
您的 while 条件 运行ning 比您想象的要快。它可能会通过创建大量对象来阻止您的通知 class。请使用计时器 运行 每 5 秒推送一次通知。
您可以使用 Instruments Tool 来查看问题。
我正在模拟警报。
为了做到这一点,我尝试在某些条件为真时每 X 秒发送一次新的本地通知,并在某些条件为假时停止(当用户取消警报时)
我有一个 Set
按钮和一个 Stop
按钮。
以下代码适用于按下 Set
按钮时的代码:
@IBAction func setNotification(_ sender: Any) {
// timeEntered = time.text!
// let hrMin = timeEntered.components(separatedBy: ":");
let content = UNMutableNotificationContent()
content.title = "How many days are there in one year"
content.subtitle = "Do you know?"
content.body = "Do you really know?"
content.badge = 1
content.sound = UNNotificationSound(named: "alarm.aiff");
while (repeatNotifications) {
trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false);
let request = UNNotificationRequest(identifier: "timerDone", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
}
按下 Stop
按钮时:
@IBAction func stopRepeat(_ sender: Any) {
repeatNotifications = false
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
}
现在,当我按下 Set
按钮时,它停留在按下模式(它的颜色发生变化),除了主页按钮。另外,没有设置本地通知。
有什么想法可以实现吗?
tl;dr:如何每隔 X 秒设置一次新的本地通知,直到按下某个按钮
您的 while 条件 运行ning 比您想象的要快。它可能会通过创建大量对象来阻止您的通知 class。请使用计时器 运行 每 5 秒推送一次通知。 您可以使用 Instruments Tool 来查看问题。