Close Menu
  • Home
  • AI
  • Big Data
  • Cloud Computing
  • iOS Development
  • IoT
  • IT/ Cybersecurity
  • Tech
    • Nanotechnology
    • Green Technology
    • Apple
    • Software Development
    • Software Engineering

Subscribe to Updates

Get the latest technology news from Bigteetechhub about IT, Cybersecurity and Big Data.

    What's Hot

    How to run RAG projects for better data analytics results

    October 13, 2025

    MacBook Air deal: Save 10% Apple’s slim M4 notebook

    October 13, 2025

    Part 1 – Energy as the Ultimate Bottleneck

    October 13, 2025
    Facebook X (Twitter) Instagram
    Facebook X (Twitter) Instagram
    Big Tee Tech Hub
    • Home
    • AI
    • Big Data
    • Cloud Computing
    • iOS Development
    • IoT
    • IT/ Cybersecurity
    • Tech
      • Nanotechnology
      • Green Technology
      • Apple
      • Software Development
      • Software Engineering
    Big Tee Tech Hub
    Home»iOS Development»How to launch a macOS app at login?
    iOS Development

    How to launch a macOS app at login?

    big tee tech hubBy big tee tech hubJuly 21, 2025004 Mins Read
    Share Facebook Twitter Pinterest Copy Link LinkedIn Tumblr Email Telegram WhatsApp
    Follow Us
    Google News Flipboard
    How to launch a macOS app at login?
    Share
    Facebook Twitter LinkedIn Pinterest Email Copy Link


    In this tutorial I’ll show you how to launch a completely sandboxed macOS application on system startup written in Swift.

    Update: you should simply add the LaunchAtLogin library to your project. It’ll take care of everything and it has some other cool utility features.

    Project setup

    Let’s start this tutorial by creating a new Xcode project with a macOS app template. Name it for example MainApplication, use storyboards and of course select Swift as the default language, we don’t need tests for this project at all.

    Now that we have the main application target, there is this nice little function available called SMLoginItemSetEnabled. With that function you can register an application bundle identifier to auto start when the user logs in, but you can not register your own app identifier. Sounds crazy, huh? 😜

    You can register a bundle identifier embedded into your main application to get auto-launched by the system. To do this you will have to create a new launcher application which will be launched later by your main application.

    You also have to code sign your application with your Developer ID, otherwise it won’t start after you log in to macOS. Sandboxing is a crucial part of the process, so make sure that you follow every instruction carefully.

    Targets & configurations

    Create a new target inside your current project. Name this new target for example LauncherApplication. Enable sandbox and code signing for both targets (main and launcher apps) under the Signing & Capabilities tab. For the LauncherApplication target in the build settings set skip install to yes.

    How to launch a macOS app at login?

    For the launcher app add a new entry to the Info.plist file: Application is background only with the value: yes. This will set your application as a background app, we don’t really need user interface for a launcher tool, right?

    Background only

    Add a new copy file build phase to your main application target to copy your launcher application into the bundle. The destination should be wrapper and the subpath should be Contents/Library/LoginItems.

    Copy files

    Link the ServiceManagement.framework to your main application and double check that the launcher app is embedded into your main application.

    Frameworks

    From the LauncherApplication‘s storyboard file delete your window and your view controller, also you can remove the ViewController.swift file from this target. This is a background app after all, so we don’t need these stupid things to lay around.

    Creating the launcher programmatically

    Somewhere in your main application you have to register your launcher application’s identifier. When your main application starts you have to kill the launcher application if it’s still running. You can do this by sending a notification to that specific app with the NSDistributedNotificationCenter class.

    import Cocoa
    import ServiceManagement
    
    extension Notification.Name {
        static let killLauncher = Notification.Name("killLauncher")
    }
    
    @NSApplicationMain
    class AppDelegate: NSObject {}
    
    
    extension AppDelegate: NSApplicationDelegate {
    
        func applicationDidFinishLaunching(_ aNotification: Notification) {
    
            let launcherAppId = "com.tiborbodecs.LauncherApplication"
            let runningApps = NSWorkspace.shared.runningApplications
            let isRunning = !runningApps.filter { 
                $0.bundleIdentifier == launcherAppId 
            }.isEmpty
    
            SMLoginItemSetEnabled(launcherAppId as CFString, true)
    
            if isRunning {
                DistributedNotificationCenter.default().post(
                    name: .killLauncher, 
                    object: Bundle.main.bundleIdentifier!
                )
            }
        }
    }
    

    In the launcher application you have to start your main application if it’s not running already. That’s it. You should also subscribe for the notifications from the main app to terminate if the launcher is not needed anymore.

    import Cocoa
    
    extension Notification.Name {
        static let killLauncher = Notification.Name("killLauncher")
    }
    
    @NSApplicationMain
    class AppDelegate: NSObject {
    
        @objc func terminate() {
            NSApp.terminate(nil)
        }
    }
    
    extension AppDelegate: NSApplicationDelegate {
    
        func applicationDidFinishLaunching(_ aNotification: Notification) {
    
            let mainAppIdentifier = "com.tiborbodecs.MainApplication"
            let runningApps = NSWorkspace.shared.runningApplications
            let isRunning = !runningApps.filter { 
                $0.bundleIdentifier == mainAppIdentifier 
            }.isEmpty
    
            if !isRunning {
                DistributedNotificationCenter.default().addObserver(
                    self, 
                    selector: #selector(self.terminate), 
                    name: .killLauncher, 
                    object: mainAppIdentifier
                )
    
                let path = Bundle.main.bundlePath as NSString
                var components = path.pathComponents
                components.removeLast()
                components.removeLast()
                components.removeLast()
                components.append("MacOS")
                components.append("MainApplication") //main app name
    
                let newPath = NSString.path(withComponents: components)
    
                NSWorkspace.shared.launchApplication(newPath)
            }
            else {
                self.terminate()
            }
        }
    }
    

    That’s it, we’re ready to launch. Export your main application and here is the most important thing: code sign it with your Developer ID. Start it, close it, log out and back into the system. Hopefully your main application will be running again.



    Source link

    app Launch login macOS
    Follow on Google News Follow on Flipboard
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Copy Link
    tonirufai
    big tee tech hub
    • Website

    Related Posts

    macOS Sequoia (version 15) is now available for your Mac with some big upgrades

    October 12, 2025

    ios – Apple mapkit route function dose not works in China

    October 12, 2025

    Apple says goodbye to the Clips app

    October 12, 2025
    Add A Comment
    Leave A Reply Cancel Reply

    Editors Picks

    How to run RAG projects for better data analytics results

    October 13, 2025

    MacBook Air deal: Save 10% Apple’s slim M4 notebook

    October 13, 2025

    Part 1 – Energy as the Ultimate Bottleneck

    October 13, 2025

    From Static Products to Dynamic Systems

    October 13, 2025
    Advertisement
    About Us
    About Us

    Welcome To big tee tech hub. Big tee tech hub is a Professional seo tools Platform. Here we will provide you only interesting content, which you will like very much. We’re dedicated to providing you the best of seo tools, with a focus on dependability and tools. We’re working to turn our passion for seo tools into a booming online website. We hope you enjoy our seo tools as much as we enjoy offering them to you.

    Don't Miss!

    How to run RAG projects for better data analytics results

    October 13, 2025

    MacBook Air deal: Save 10% Apple’s slim M4 notebook

    October 13, 2025

    Subscribe to Updates

    Get the latest technology news from Bigteetechhub about IT, Cybersecurity and Big Data.

      • About Us
      • Contact Us
      • Disclaimer
      • Privacy Policy
      • Terms and Conditions
      © 2025 bigteetechhub.All Right Reserved

      Type above and press Enter to search. Press Esc to cancel.