日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自定义UTI 注册你的APP所支持的文件类型

發(fā)布時間:2024/1/8 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义UTI 注册你的APP所支持的文件类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前有整理過關(guān)于《根據(jù)文件后綴打開APP》的文章 ,請先參考它,然后接下來學(xué)習(xí),如何自定UTI。
應(yīng)用場景:APP 打開本公司自定義格式的文件,特殊的自定義后綴的文件。通過QQ 微信、郵箱等等接受到手機(jī)上的特殊文件,在打開時,主動調(diào)用自己的APP。

要點(diǎn):
1. 你要注冊(向iOS/mac系統(tǒng))申明app能夠打開某種類型的文檔,這樣其他app才可能通過DIC(document interaction interface)把文件轉(zhuǎn)給你app來打開
2. 注冊就要在plist里聲明: document types(我猜的),然后打開文本模式一看,果然對應(yīng)了CFBundleDocumentTypes

<key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeName</key>文檔類型名稱 <string>pdf</string> <key>LSHandlerRank</key> //是擁有此類型文檔,還是僅用于打開 <string>Default</string> </dict> </array>

一般而言一個文檔類型和一個文件類型對應(yīng),當(dāng)然也可以是多個文件類型例如。doc/。docx是word文檔在兩個不同版本下的文件后綴。這樣你可以把這兩個文件類型組合在一個文檔類型中
A uniform type identifier (UTI) is a string that identifies a class of entities with a type. UTIs are typically used to identify the format for files or in-memory data types and to identify the hierarchical layout of directories, volumes or packages
這里有個基本的對照表,文件后綴和UTI的串
https://developer.apple.com/library/mac/#documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html
更多的對應(yīng)可以參考:
Apple’s Uniform Type Identifiers Overview

<key>LSItemContentTypes</key><array><string>com.sunsetlakesoftware.molecules.hr</string> <string>org.gnu.gnu-zip-archive</string></array>

這里我們使用了一個系統(tǒng)定義的。org。gnu。。。。另外一個是程序定義的UTI,程序定義的UTI需要導(dǎo)出,系統(tǒng)其他程序才能知道
3. 需要為自定義的UtI在plist中申明:

<key>UTExportedTypeDeclarations</key> <array><dict><key>UTTypeConformsTo</key><array><string>public.plain-text</string><string>public.text</string></array><key>UTTypeDescription</key><string>Molecules Structure File</string><key>UTTypeIdentifier</key><string>com.sunsetlakesoftware.molecules.hr</string> // 自定義的type identifier<key>UTTypeTagSpecification</key><dict><key>public.filename-extension</key> //關(guān)鍵點(diǎn)<string>hr</string><key>public.mime-type</key> //關(guān)鍵點(diǎn)<string>chemical/x-pdb</string></dict></dict> </array>

關(guān)鍵是說明com.sunsetlakesoftware.molecules.hrUTI 是和.hr后綴文件關(guān)聯(lián),且mime類型是 chemical/x-pdb.
這樣一來,在郵件程序中,tap且hold等待彈出候選程序列表,可以打開特定的文件。
當(dāng)附件被打開,你的app就啟動了。一般而言,至少要在application:didfinishelaunchingwithoptions中處理文件路徑等,看起來就像是文件被copy到你app目錄下,然后打開了:

再看另外一個例子,注釋在其中

<dict><key>CFBundleTypeName</key><string>My File Format</string> //任意定義<key>CFBundleTypeIconFiles</key> //icon圖標(biāo)資源,當(dāng)用于顯示此類文件的時候<array><string>MySmallIcon.png</string> //resource in bundle<string>MyLargeIcon.png</string></array><key>LSItemContentTypes</key> //使用了UTI格式的,關(guān)聯(lián)到文件格式<array><string>com.example.myformat</string> //</array><key>LSHandlerRank</key><string>Owner</string> //非默認(rèn),而是owner </dict>

也可以通過MIME來指定文件類型

總結(jié)

以上是生活随笔為你收集整理的自定义UTI 注册你的APP所支持的文件类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。