#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