1.狀態(tài)欄程序制作
xcode創(chuàng)建項(xiàng)目
-
刪除Main.storyboard 中的Window和ViewController
15006520234330.jpg appdelegate 添加代碼
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)
var statusMenu: NSMenu!
func applicationDidFinishLaunching(_ aNotification: Notification) {
statusMenu = NSMenu(title: "")
let item0 = NSMenuItem(title: "啟動(dòng)App", action: #selector(startApp), keyEquivalent: "")
item0.isEnabled = true
statusMenu.insertItem(item0, at: 0)
let item1 = NSMenuItem(title: "設(shè)置", action: #selector(setting), keyEquivalent: "")
item1.isEnabled = true
statusMenu.insertItem(item1, at: 1)
let item2 = NSMenuItem(title: "退出", action: #selector(exit), keyEquivalent: "")
item2.isEnabled = true
statusMenu.insertItem(item2, at: 2)
let icon = NSImage(named: "icon1")
statusItem.image = icon
statusItem.menu = statusMenu
}
func setting() {}
func exit() {
NSApplication.shared().terminate(self)
}
func startApp() {}
}
- info.plist添加 Application is agent (UIElement) 為 true (隱藏dock圖標(biāo))
2.主程序target添加
- 添加target
-
Build Phases 添加copy Files選項(xiàng)坚芜,添加target app
15006535734128.jpg - 啟動(dòng)app
let path = Bundle.main.bundlePath.appending("/Contents/SharedSupport/MainApp.app")
let task = Process()
task.launchPath = "/usr/bin/open"
task.arguments = [path]
task.launch()
3.進(jìn)程間的通訊
- 使用CFMessagePort
- 參考
4.開機(jī)啟啟動(dòng)
-
參考
-
使用Launchd
- 配置plist
- 添加command Line Tool 并配置啟動(dòng)
- copy plist文件至 /Library/LaunchAgents 目錄下潮售,copy command Line Tool 至 /Users/Shared
把啟動(dòng)項(xiàng)添加到用戶登錄項(xiàng)的腳本
#把文本編輯.app 添加到用戶登錄項(xiàng)
#!/bin/bash
/usr/bin/osascript -e "tell application \"System Events\" to make new login item with properties { path: \"/Applications/TextEdit.app\", hidden:false } at end"