#34 MacOS App — Document Types

如何在 MacOS APP 中挑選能開啟APP的副檔名檔案。

在MacOS中檔案會以預設的開啟App Icon當作檔案Icon。

這些設定都是在 App/TARGETS/Info 項下 Document Types, Exported Type Identifiers, Imported Type Identifiers.

ㄧ、Document Types — 可輸入現存的UTI或是自創的UTI

1 現存UTI — 以Png為例:

  • 步驟一、取得png檔案的UTI:

在終端機terminal 輸入 mdls 指令,以找到檔案的UTI(Uniform Type Identifiers)。

以png為例,在kMDItemContentType即為UTI: “public.png”

mdls 檔案路徑
  • 步驟二、在 Document Types 輸入:

完成後,Build專案,Document Types的資料就會自動寫入到電腦中,查看png檔案就能看見新的App選項。

2 自訂的副檔名 — 以aaa為例:

尚未定義 Document Types 及 Identifier 以前,file沒有icon種類由Mac自動判定為文件。
mdls 查詢 UTI, 是一個由系統編列的 dyn.開頭的亂數

  • 步驟一、自訂一個 Identifier — 以com.custom.aaa為例:

這個時候還不能使用,因為電腦無法辨認這個自訂的UTI。

  • 步驟二、Exported Type Identifier及Imported Type Identifiers:

需要在這裡自訂ID及Extensions才能讓電腦識別。

Description 最好取跟Document Types 的 Name 一樣。
Conforms To 放入 public.data 以及.aaa檔案的dyn.編碼

  • 步驟三、Clean Build Folder

在Xcode / Product / Clean Build Folder 清除一次,再重新Build。

  • 步驟四、電腦重新開機,選擇自己專案Archive出來的檔案當作預設開啟APP。

應該能看到檔案的icon跟說明都改變了。

如果沒有生效的話,用 備註2 註冊UTIs應該就能使用。

備註1:Apple 官方建議部分Identifier不要使用。例:public, dyn or com.apple開頭的文字。

備註2:lsregister 可以控制UTIs的註冊與刪除,他的路徑是 /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister

參考資料:https://blog.chitaner.com/blog/%E8%B0%88%E8%B0%88macOS%E4%B8%8B%E5%AF%B9Document%20Types%E5%92%8CUTI%E7%9A%84%E7%90%86%E8%A7%A3.html

--

--