Skip to content

Instantly share code, notes, and snippets.

@xbee
Created August 3, 2019 04:50
Show Gist options
  • Save xbee/8ce5087a49ccbcb89636a69aeb4a92f7 to your computer and use it in GitHub Desktop.
Save xbee/8ce5087a49ccbcb89636a69aeb4a92f7 to your computer and use it in GitHub Desktop.
Swift 3 single instance process #swift
func applicationDidFinishLaunching(aNotification: NSNotification) {
/* Check if another instance of this app is running. */
let bundleID = Bundle.main.bundleIdentifier!
if NSRunningApplication.runningApplications(withBundleIdentifier: bundleID).count > 1 {
/* Show alert. */
let alert = NSAlert()
alert.addButton(withTitle: "OK")
let appName = Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as! String
alert.messageText = "Another copy of \(appName) is already running."
alert.informativeText = "This copy will now quit."
alert.alertStyle = NSAlert.Style.critical
alert.runModal()
/* Activate the other instance and terminate this instance. */
let apps = NSRunningApplication.runningApplications(withBundleIdentifier: bundleID)
for app in apps {
if app != NSRunningApplication.current {
app.activate(options: [.activateAllWindows, .activateIgnoringOtherApps])
break
}
}
NSApp.terminate(nil)
}
/* ... */
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment