My problem is that I am trying to schedule notifications that come daily at a specific time this is my code
import SwiftUI
struct notifView: View {
var body: some View {
VStack {
VStack {
Button("Request Permission") {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if granted {
print("Access Granted!")
} else {
print("Access Not Granted")
}
}
}
.frame(width: 200, height: 60, alignment: .center)
.foregroundColor(.black)
.background(Color.blue)
.cornerRadius(10.0)
.padding()
Button("Add Notifications For Morning") {
func scheduleNotification() {
let center = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = "Morning Time"
content.body = "Wake Up And Be Productive!"
content.categoryIdentifier = "reminder"
content.sound = UNNotificationSound.default
var dateComponents = DateComponents()
dateComponents.hour = 6
dateComponents.minute = 30
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
center.add(request)
}
}
.padding()
Button("Add Notifications For Middle Of The Day") {
func scheduleNotification() {
let center = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = "Middle Of The Day"
content.body = "Did you have your daily run?"
content.categoryIdentifier = "reminder"
content.sound = UNNotificationSound.default
var dateComponents = DateComponents()
dateComponents.hour = 12
dateComponents.minute = 30
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
center.add(request)
}
}
.padding()
Button("Add Notifications For Night") {
func scheduleNotification() {
let center = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = "Night Time"
content.body = "Time to sleep"
content.categoryIdentifier = "reminder"
content.sound = UNNotificationSound.default
var dateComponents = DateComponents()
dateComponents.hour = 20
dateComponents.minute = 51
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
center.add(request)
}
}
.foregroundColor(.blue)
.padding()
}
}
}
}
struct notifView_Previews: PreviewProvider {
static var previews: some View {
notifView()
}
}
3
Answers
I got it working with the help of this video: https://www.youtube.com/watch?v=mG9BVAs8AIo
and some code from @lorem ipsum thank you so much for the help
Look at the comments within the code
Add one day in today’s date so we got next day and then add your specific time on which you want trigger the notification.