2014-10-30 132 views
4

我开发了一个保存和加载唯一类型文件的Mac应用程序。该类型在CFBundleDocumentTypes下的info.plist中正确声明,列为LSHandlerRank:Owner和CFBundleTypeRole:Editor。我发布了我的应用程序的新版本,如果已在用户计算机上安装了旧版本应用程序的用户安装了新版本,并且还安装了旧版本,那么新版本会自动接管文件关联这种类型来自旧版本的应用程序。但默认的操作系统行为似乎是授予与文件类型关联的最早安装的应用程序为永久所有者,除非用户手动更改它。我知道命令行工具duti可以进行关联更改,并且还可以编辑系统文件com.apple.LaunchServices.plist,但这些似乎不是通过应用程序以编程方式执行此操作的最佳或最可靠的方法。是否有任何“正确”/苹果认可的方式去做我想要的?通过info.plist中的CFBundleDocumentTypes覆盖Mac应用程序文件关联

+0

您是否最终找到了解决方案?我在这里得到了完全相同的问题:/ – Uflex 2014-12-16 10:23:44

回答

3

苹果官方认可的应用程序设置文件类型的默认应用程序可能使用其提供的LSSetDefaultRoleHandlerForContentType函数。该函数设置存储在LaunchServices中的值。

Here是如何在Objective-C和斯威夫特使用此API有限的官方文档。

虽然目前没有出现任何办法做到这一点通过Info.plist,作为第一个应用程序中获得的设置为用户首选的应用程序。用户必须更改他们的首选应用程序,这可以通过上述API来实现。