23 lines
1023 B
Swift
23 lines
1023 B
Swift
import Foundation
|
|
import UserNotifications
|
|
|
|
enum NotificationService {
|
|
static func requestPermission() async {
|
|
_ = try? await UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge])
|
|
}
|
|
|
|
static func show(_ message: KasztelanMessage) async {
|
|
let settings = await UNUserNotificationCenter.current().notificationSettings()
|
|
guard settings.authorizationStatus == .authorized || settings.authorizationStatus == .provisional else { return }
|
|
let content = UNMutableNotificationContent()
|
|
content.title = "KASZTELAN"
|
|
content.subtitle = message.title
|
|
content.sound = .default
|
|
content.threadIdentifier = "kasztelan-messages"
|
|
content.categoryIdentifier = "KASZTELAN_MESSAGE"
|
|
content.userInfo = ["message_id": message.id]
|
|
let request = UNNotificationRequest(identifier: "kasztelan-\(message.id)", content: content, trigger: nil)
|
|
try? await UNUserNotificationCenter.current().add(request)
|
|
}
|
|
}
|