macOS应用配置文件的可打开应用
macOS应用配置文件的可打开应用

macOS应用配置文件的可打开应用

如果想要在macOS上将App注册为“文件的可打开应用”,需要Info.plist和一个系统回调方法处理。

下面以“轻压图片”App为例,右击打开macOS上的图片时,显示“轻压图片”App选项。

配置Info.plist

在项目中,找到Info.plist文件,创建 “Document Types”条目。

在Xcode 16中默认只显示” Document Type Name”和“Handler rank”。

“Document Type Name”为命名,描述性文本,“Handler rank”默认为Default。

需要手动添加一个“LSItemContentTypes”数组,“LSItemContentTypes”默认会被转义为“Document Content Type Identifiers”。

添加打开文件的格式,例如这里配置常见图片格式的UTI类型:

public.image               (所有图片格式的通用类型)
public.jpeg                (JPEG 图片)
public.png                 (PNG 图片)
public.heic                (HEIC 图片)
com.compuserve.gif         (GIF 图片)
public.tiff                (TIFF 图片)
com.microsoft.bmp          (BMP 图片)
public.webp                (WebP 图片)

配置后,运行应用。

Mac就会自动识别,并在Finder中右击打开图片时,可以选择自己的App(“轻压图片”)。

接收文件代码

在macOS中,需要调用系统回调接收文件的代码。

根据项目类型,主要分为两种:

1、使用AppDelegate接收

func application(_ application: NSApplication, open urls: [URL]) {
    for url in urls {
        print("接收到文件:", url.path)
        handleImageFile(url)
    }
}

处理函数:

func handleImageFile(_ url: URL) {
    // 加入队列
    // 加载图片
    // 执行压缩
}

2、使用 SwiftUI 接收

.onOpenURL { url in
    print("接收到文件:", url)
}

例如:

@main
struct ImageSlimApp: App {

    var body: some Scene {
        WindowGroup {
            ContentView()
                .onOpenURL { url in
                    handleImageFile(url)
                }
        }
    }
}

总结

从Finder中右键可以选择多个文件,通过AppDelegate 方式可以一次传入 [URL] 参数,SwiftUI 方法会多次调用 onOpenURL 方法。

如果编译并运行App后,仍然无法通过右键选择图片。可以执行一次系统注册刷新:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
killall Finder

然后重新打开Finder。

相关文章

1、Xcode项目Info.plist文件位置

2、Apple文件和数据类型UTI

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注