44 lines
1.4 KiB
Swift
44 lines
1.4 KiB
Swift
import AppKit
|
|
import UserNotifications
|
|
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
|
let args = ProcessInfo.processInfo.arguments
|
|
let subtitle = args.count > 1 ? args[1] : ""
|
|
let body = args.count > 2 ? args[2] : ""
|
|
|
|
let center = UNUserNotificationCenter.current()
|
|
center.requestAuthorization(options: [.alert, .sound]) { granted, _ in
|
|
guard granted else {
|
|
DispatchQueue.main.async { NSApp.terminate(nil) }
|
|
return
|
|
}
|
|
|
|
let content = UNMutableNotificationContent()
|
|
content.title = "Photon Uploader"
|
|
content.subtitle = subtitle
|
|
content.body = body
|
|
content.sound = .default
|
|
|
|
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 0.1, repeats: false)
|
|
let request = UNNotificationRequest(
|
|
identifier: UUID().uuidString,
|
|
content: content,
|
|
trigger: trigger
|
|
)
|
|
|
|
center.add(request) { _ in
|
|
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
|
|
NSApp.terminate(nil)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
let app = NSApplication.shared
|
|
app.setActivationPolicy(.prohibited)
|
|
let delegate = AppDelegate()
|
|
app.delegate = delegate
|
|
app.run()
|