🖥️

【Swift/macOS】"ログイン時に起動"を簡単に実装できる「LaunchAtLogin」

2022/03/11に公開

はじめに

常駐系のMacアプリ(LINE、Discordなど)でよく見かける「ログイン時に起動」という設定がありますが、これを簡単に実装できる「LaunchAtLogin」というライブラリを紹介します。

LaunchAtLoginには、ログイン時に起動させるヘルパーとなるアプリが入っていて、そこからアプリ本体を起動させるという仕組みです。

macOS 12以前も対応させる場合

https://github.com/sindresorhus/LaunchAtLogin

macOS 13以降にのみ対応させる場合

https://github.com/sindresorhus/LaunchAtLogin-Modern

インストール方法

Swift Package Managerでは、「File」→「Add Packages...」から以下のURLを指定すればインストールできます。

https://github.com/sindresorhus/LaunchAtLogin

https://github.com/sindresorhus/LaunchAtLogin-Modern

使い方

インポート

import LaunchAtLogin

「ログイン時に起動」設定になっているか?(Bool)

LaunchAtLogin.isEnabled

ライブラリ側で保存されるので、この設定をUserDefaultsなどに保存しておく必要はありません。

LaunchAtLogin.isEnabled = true

このようにLaunchAtLogin.isEnabledを書き換えるだけで、LaunchAtLoginの設定を変更できます。

SwiftUI

SwiftUI用のViewなども色々用意されているので、SwiftUI製のアプリであれば上記の処理を書かなくてもチェックボックスなどが利用できます。

struct ContentView: View {
	var body: some View {
		LaunchAtLogin.Toggle()
	}
}

struct ContentView: View {
	var body: some View {
		LaunchAtLogin.Toggle {
			Text("Launch at login")
		}
	}
}

struct ContentView: View {
	@ObservedObject private var launchAtLogin = LaunchAtLogin.observable

	var body: some View {
		Toggle("Launch at login", isOn: $launchAtLogin.isEnabled)
	}
}

おわりに

その他のコード例や注意事項などは、ライブラリのGitHubページから確認できます。

使う前に1度目を通しておくことをオススメします。

GitHubで編集を提案

Discussion