我需要为我的应用程序提供自定义文件格式,我认为我可以制作PNG的超集。 macOS 会在 Finder 中显示常规 PNG 文件(以及扩展名为.png
的 APNG)的预览。我希望 macOS 显示我的文件格式的预览,即使它没有.png
扩展名。我需要告诉 macOS,扩展名为.px2
的文件是有效的 PNG,可以通过常规 PNG 解码器解码。
我一直在阅读此页面,试图找到要使用的正确密钥集,但我没有任何运气。我认为NSExportableType可能是答案,但似乎不是这样。
为了测试这一点,我将 APNG 文件的扩展名从.png
更改为.px2
.我意识到我可以只使用.png
但我认为这可能有点令人困惑(对于用户和操作系统)。
我试图做的事情有一点可能性是不可能的!
我认为您可能正在查看两个不同的问题:一个是操作系统识别文件类型并将其链接到您的应用程序,另一个是能够显示预览。
后者将高度依赖于Finder内置的QuickLook插件的工作方式。您可能需要自己实现其中之一。
调试此类问题可能有点棘手,因为您需要确保macOS已吸收您的NSExportableTypes
。 一个快速检查是进入终端并使用mdls <file of your type and extension>
,看看您的文件的kMDItemContentType
和kMDItemContentTypeTree
是什么。
如果它根本无法识别扩展,请确保它已通过使用隐藏在 CoreServices 的 LaunchServices 框架中的lsregister
重新加载。
获取手册页/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister
强制重新加载应用程序(-lint
)/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -lint -f <path>
在解释条目时添加了有关错误的更多详细信息。
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -seed
将重置守护程序,并从默认应用程序和库位置重新设定数据种子。