Как узнать, когда мой таймер остановился, даже когда приложение не запущено - PullRequest
0 голосов
/ 03 ноября 2019

Это может быть что-то вроде историй в Instagram или других подобных социальных сетях: публикуемые вами истории останутся только на 24 часа, а затем исчезнут сами по себе, даже если приложение не запущено. Я сделал нечто подобное, взгляните на код:

// Update the notification database with the deadline date
let today = Date()
let modifiedDate = Calendar.current.date(byAdding: .day, value: 1, to: today)!
// Format the date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
let formattedDate = dateFormatter.string(from: modifiedDate)
self.DBRef.child("Notifications").child(chosenUser).child(selectedStoryID).updateChildValues(["Due Date" : formattedDate]) { (error, ref) in
    if let error = error?.localizedDescription {
        print("Failed to set deadline with error \(error)")
    } else {
        print("Deadline set")
    }
}

Этот код делает то, что он принимает текущую дату и время, добавляет к нему 24 часа и сохраняет его в базе данных. Взгляните на следующий фрагмент кода:

let dateformatter = DateFormatter()
dateformatter.dateFormat = "MM-dd-yyyy HH:mm"
let deadline = dateformatter.date(from: notificationTableData.storyDeadline)

_ = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { (timer) in

    let seconds = Int(deadline?.timeIntervalSinceNow ?? 0.0)
    self.timeLeft.text = String(format: "%02d:%02d:%02d", (seconds / 3600), ((seconds % 3600) / 60), (seconds % 60))

    if seconds == 0 {
        timer.invalidate()
        // Remove this node from the database
    }
}

Этот фрагмент кода заключается в том, что он извлекает дату из базы данных и отображает ее в моем приложении. Я хочу, чтобы, когда текущая дата и время были равны дате и времени крайнего срока, я хочу удалить конкретный узел (я отметил его на снимке экрана ниже) из базы данных Firebase, даже если приложение не запущено.

Database

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...