macOS Ventura 13.0 开机自动启动失效

背景

更新完系统,发现自己一个mac应用开机自启失败。
表现为方法调用返回 false

SMLoginItemSetEnabled(loginItemIdentifier as CFString, state) 

查询发现macOS 13.0 更新了一个新类 SMAppService,使用这个类调用register() and unregister()

image.png

解决办法

    // 创建登录项
    @available(macOS 13.0, *)
    private func loginItem() -> SMAppService {
        // The bundle identifier of the helper application bundle   
        return SMAppService.loginItem(identifier: loginItemIdentifier)
    }
    
    // 注册登录项
    @available(macOS 13.0, *)
    func addLoginItem(complate: (_ result: Bool) -> ()) {
        do {
            try loginItem().register()
            saveLoginAutoLaunchState(state: true)
            complate(true)
        } catch {
            print(error)
            complate(false)
        }
    }
    
    // 移除登录项
    @available(macOS 13.0, *)
    func removeLoginItem(complate: (_ result: Bool) -> ()) {
        do {
            try loginItem().unregister()
            saveLoginAutoLaunchState(state: false)
            complate(true)
        } catch {
            print(error)
            complate(false)
        }
    }

Xcode 需要更新到14.1。正式暂时没更新,可以用RC版

官方文档
https://developer.apple.com/documentation/servicemanagement/smappservice

你可能感兴趣的:(macOS Ventura 13.0 开机自动启动失效)