Hi,
I’m working on a Safari extension for macOS, and I’d like the app to use specific system notification settings right after installation. I’m wondering if there’s a way in Swift to programmatically configure the default notification preferences (as seen in System Settings > Notifications > [my app]).
Here are the desired settings:
- Only Desktop – without “Notification Center” or “Lock Screen”
- Alert Style: Temporary
- Badge App Icon: Enabled
- Play Sound for Notifications: Disabled
- Show Previews: When Unlocked
- Notification Grouping: Off (I don’t want them to accumulate in Notification Center)
Here is the code I’m currently using to display a basic notification:
private func handleNotificationRequest(_ message: [String: Any]) {
guard let title = message["title"] as? String,
let body = message["body"] as? String else {
return
}
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
if granted {
self.showNotification(title: title, body: body)
}
}
}
private func showNotification(title: String, body: String) {
let content = UNMutableNotificationContent()
content.title = title
content.body = body
content.sound = nil // No sound for subtle notification
// Create notification that doesn't persist in notification center
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 0.1, repeats: false)
let request = UNNotificationRequest(identifier: "fast-url-copy-notification", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { error in
if let error = error {
os_log(.error, "Failed to show notification: %@", error.localizedDescription)
}
}
}
OS: macOS 26.0
Thanks in advance, Mateusz