You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.4 KiB
51 lines
1.4 KiB
//
|
|
// NotificationService.swift
|
|
// AllIn
|
|
//
|
|
// Created by Emre on 22/02/2024.
|
|
//
|
|
|
|
import UserNotifications
|
|
|
|
struct NotificationItem {
|
|
var title: String
|
|
var content: String
|
|
var interval: TimeInterval
|
|
}
|
|
|
|
class NotificationService: ObservableObject {
|
|
|
|
@Published var notifications: [NotificationItem] = []
|
|
|
|
func scheduleNotifications() {
|
|
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
|
|
if granted {
|
|
print("Permission for notifications granted.")
|
|
} else {
|
|
print("Permission for notifications denied.")
|
|
}
|
|
}
|
|
}
|
|
|
|
func loadNotifications() {
|
|
for notification in notifications {
|
|
scheduleNotification(with: notification)
|
|
}
|
|
}
|
|
|
|
func removeAllNotifications() {
|
|
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
|
|
}
|
|
|
|
func scheduleNotification(with item: NotificationItem) {
|
|
let content = UNMutableNotificationContent()
|
|
content.title = item.title
|
|
content.body = item.content
|
|
|
|
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: item.interval, repeats: false)
|
|
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
|
|
|
|
UNUserNotificationCenter.current().add(request)
|
|
}
|
|
}
|