Posts

Post not yet marked as solved
0 Replies
107 Views
Hello There!, I'm currently working on an App with an implemented timer. It was initially planned, that the User will get a notification when the timer ends. Everything works fine until the timer ends and the phone doesn't gets any notification... This is my code: import SwiftUI import Combine import UserNotifications struct TimerView: View { @State private var timeRemaining: TimeInterval @State private var timerActive = false @Binding var studyTime: Int @Binding var selectedExam: Exam init(studyTime: Binding<Int>, selectedExam: Binding<Exam>) { _studyTime = studyTime _selectedExam = selectedExam _timeRemaining = State(initialValue: TimeInterval(studyTime.wrappedValue * 60)) } var body: some View { VStack { ZStack { Circle() .trim(from: 0, to: CGFloat(timeRemaining / (TimeInterval(studyTime * 60)))) .stroke(Color.purple, lineWidth: 15) .rotationEffect(.degrees(-90)) .animation(.linear(duration: 1)) .padding(40) Text("\(timeRemaining.formattedTime)") .font(.system(size: 50)) } Button(action: { self.timerActive.toggle() }) { Text(timerActive ? "Stop" : "Start") .font(.title) .padding() } .foregroundColor(.white) .background(timerActive ? Color.red : Color.green) .cornerRadius(10) .padding() } .onReceive(timer) { _ in guard self.timerActive else { return } if self.timeRemaining > 0 { self.timeRemaining -= 1 } else { self.timerActive = false sendNotification() } print("Time Remaining: \(self.timeRemaining)") } .navigationTitle($selectedExam.wrappedValue.subject) .navigationBarBackButtonHidden(true) .onDisappear { // Actions if the timer View disappears } } var timer: AnyPublisher<Date, Never> { Timer.TimerPublisher(interval: 1.0, runLoop: .main, mode: .default) .autoconnect() .eraseToAnyPublisher() } func sendNotification() { let content = UNMutableNotificationContent() content.title = "Lernzeit vorbei" content.body = "Deine Lernzeit für \(selectedExam.subject) ist abgelaufen!" content.sound = UNNotificationSound.default let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false) let request = UNNotificationRequest(identifier: "timerNotification", content: content, trigger: trigger) UNUserNotificationCenter.current().add(request) { error in if let error = error { print("Fehler beim Hinzufügen der Benachrichtigung zur Warteschlange: \(error.localizedDescription)") } else { print("Benachrichtigung zur Warteschlange hinzugefügt") } } } } extension TimeInterval { var formattedTime: String { let minutes = Int(self) / 60 % 60 let seconds = Int(self) % 60 return String(format: "%02i:%02i", minutes, seconds) } } I looked it up and the app is allowed to send every type of notification... (this is initialized in another part of the code)
Posted
by StrgR.
Last updated
.
Post marked as solved
3 Replies
535 Views
Hi, I stumbled about the Swift Student Challenge at Apples Website and now I have some questions. I've programmed some Apps in Xcode and I think one of them might be pretty god for this Challenge. Now I've read something about Swift Playgrounds and I'm confused. What's a Swift Playground? Do I need to create one or is it enough to have the App? and finally: I'm currently 14 and live in Germany. Is it possible to participate when I'm 14? And if not would it be a big thing to lets say forget my age and somehow think that I'm 16? Thanks a lot for answers
Posted
by StrgR.
Last updated
.