通过在info.plist中使用CFBundleDocumentTypes来覆盖Mac应用程序文件关联。

5

我开发了一个能够保存和加载独特文件类型的Mac应用程序。这个文件类型已经在info.plist下的CFBundleDocumentTypes中进行了正确声明,且被列为LSHandlerRank: Owner 和 CFBundleTypeRole: Editor。我正要发布应用程序的新版本,如果用户在他们的机器上已经安装了旧版本的应用程序并继续安装新版本,我希望新版本可以自动接管旧版本的此类型文件关联。但是默认操作系统行为似乎是授予与文件类型相关的最早安装的应用程序成为其永久所有者,除非用户手动更改设置。我知道命令行工具duti可以进行关联更改,也可以编辑系统文件com.apple.LaunchServices.plist,但从应用程序编程的角度来看,这些方法似乎不是最好或最可靠的方法。是否有任何“正确”/经过苹果认证的方法来实现我的需求?


你最终找到解决方案了吗?我这里也遇到了完全相同的问题 :/ - Uflex
1个回答

3
一种官方且经过苹果认可的方法,用于应用程序设置文件类型的默认应用程序,可能是使用他们提供的“LSSetDefaultRoleHandlerForContentType”函数。此功能设置存储在LaunchServices中的值。
在Objective-C和Swift中使用此API的有限官方文档,请参见这里
似乎没有办法通过“Info.plist”来实现此操作,因为第一个应用程序将被设置为用户首选应用程序。用户必须更改其首选应用程序,你可以使用上述API来帮助用户完成此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接