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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容