用途:本技能提供原生 macOS 应用开发专业知识,专注 AppKit、面向 Mac 的 SwiftUI 与系统集成,用于构建带 XPC 服务、菜单栏应用和深度 OS 能力的原生桌面应用。适用于构建原生 macOS 应用(DMG/App Store)、开发菜单栏应用(NSStatusItem)、实现 XPC 服务以进行权限分离、创建系统扩展(端点安全、网络扩展)、将 iPad 应用移植到 Mac(Catalyst),以及自动化 Mac 管理任务(AppleScript/JXA)。
主要能力与决策框架:在 UI 框架上,SwiftUI 适合现代应用(声明式、代码简单,但 AppKit 功能对齐有限);AppKit 适合系统工具(完整控制 NSWindow、NSView,但命令式且冗长);Catalyst 适合 iPad 移植(可用 iPad 代码免费获得 Mac 应用,但外观像 iPad 应用)。分发渠道方面,Mac App Store 沙箱化、已验证、更新方便,且系统扩展必需;直接分发(DMG)需要公证,自由度更高(可访问辅助功能 API、完全磁盘访问)。进程架构上,单体适合简单应用;XPC 服务适合复杂应用,可隔离崩溃并允许权限提升(辅助工具)。当出现无正当理由请求完全磁盘访问、在二进制中嵌入私钥、绕过 Gatekeeper/公证等危险信号时,应升级给安全工程师。
使用方式与工作流:菜单栏应用(SwiftUI)通过 MenuBarExtra 场景定义菜单项,并在 Info.plist 中设置 LSUIElement = YES 隐藏 Dock 图标。系统扩展(端点安全)需要 com.apple.developer.endpoint-security.client = YES 权限,并使用 C API 创建客户端,例如 es_new_client 并在回调中根据事件类型(如 ES_EVENT_TYPE_NOTIFY_EXEC)处理。示例还包括专业菜单栏应用(MenuBarExtra、隐藏 Dock 图标、UserDefaults 设置、自定义 NSStatusItem、Sparkle 自动更新)、基于文档且带 XPC 服务的应用(NSXPCConnection 通信、崩溃隔离、降低内存占用、权限分离)、以及用于网络监控的系统扩展(NEProvider 的 startProtocol/stopProtocol、签名与公证、用户批准流程)。
最佳实践:SwiftUI 与 AppKit 可混合使用(NSViewRepresentable 包装 NSView,NSHostingView 嵌入 SwiftUI,共享状态用 Observable 或 StateObject)。安全方面使用最小权限、Keychain 存储敏感数据、App Store 启用 App Sandbox、公证需要 Hardened Runtime。分发需先代码签名再公证,直接分发可用 Sparkle 自动更新,DMG 可用 create-dmg 等工具。性能上可延迟加载、用 BGTaskScheduler 执行长任务、监控内存压力并优化启动。用户体验需支持键盘导航、深色模式、VoiceOver 辅助功能和正确的多窗口管理。质量检查清单涵盖菜单命令、可调整窗口与全屏、系统外观、沙箱、强化运行时、签名、公证、5 秒内启动、无内存泄漏和界面响应性。
限制:资料未提供收费、价格、具体平台版本要求或效果承诺等信息,这些事实暂未提供。