Как отправить уведомление, когда фоновая задача была выполнена? - PullRequest
0 голосов

Мне нужна твоя помощь! Я хочу убедиться, что при достижении максимального количества таймеров даже в свернутом режиме я получаю уведомление. Как сделать так, чтобы пришло это уведомление? (В свернутом режиме таймер работает)

Пока это происходит только в том случае, если таймер в открытом приложении закончился

// TimerFunc

func timerInstall(maxValue: CGFloat, cupBeforeStartIMG: String, cupAfterStartIMG: String, cupInProgressImg: String, cupInFinishImg: String ) {
    // Arguments
    let startTime = Date()
    timerCircle.maxValue = maxValue
    timerCircle.value = 0
    // Timer
        Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timerCounter) in
            self.timerActivateButton.isEnabled = false
            self.sortOfTeaPickerButton.isEnabled = false
            let TimePassed = Date().timeIntervalSince(startTime)
            self.timerCircle.value = CGFloat(TimePassed)
            let valueInt = Int(self.timerCircle.value)
            let valueMaxInt = Int(self.timerCircle.maxValue)
            self.leftTimeLabel.text = String("\(valueInt) секунд")
      // Switch
            switch self.timerCircle.value {
            case self.timerCircle.maxValue / 2:
                self.timerImage.image = UIImage(named: cupAfterStartIMG)
            case self.timerCircle.maxValue / 3:
                self.timerImage.image = UIImage(named: cupInProgressImg)
            case self.timerCircle.maxValue :
                self.timerImage.image = UIImage(named: cupInFinishImg)
                self.timerActivateButton.isEnabled = true
                self.sortOfTeaPickerButton.isEnabled = true
                timerCounter.invalidate()
                self.playerSound.play()
                self.timerActivateButton.backgroundColor = #colorLiteral(red: 0, green: 0.6549019608, blue: 0.462745098, alpha: 1)
                self.timerActivateButton.titleLabel?.text = "Новая чашка"
                self.leftTimeLabel.text = "Чай готов!"
                self.scheduleNotifications(inSeconds: 5)
            default:
                break
            }
        }
    }

// LocalNotification
func scheduleNotifications(inSeconds seconds : TimeInterval) {
    let date = Date(timeIntervalSinceNow: seconds)
    let notificationContent = UNMutableNotificationContent()
    notificationContent.body = "Ваш чай готов, доставайте пакетик!"
    notificationContent.sound = UNNotificationSound.default
    let calendar = Calendar.current
    let components = calendar.dateComponents([.month,.day,.hour,.minute,.second], from: date)
    let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: true)
    let request = UNNotificationRequest(identifier: "YourTeaIsReady", content: notificationContent, trigger: trigger)
    let center = UNUserNotificationCenter.current()
    center.add(request, withCompletionHandler: nil)
}

Я хочу получать локальное уведомление при достижении максимального количества таймеров в режиме свертки.

...