2014-10-30 137 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來實現。