2012-05-14 37 views
1

我想在iOS上將基於文本的自定義文件類型與我的應用相關聯。在iOS上關聯文件 - 從Safari中打開純文本文件

當我打開一個鏈接到一些PHP腳本後面的文件時,Safari會顯示「open in」選項,其中包含我的應用程序,這是可以的。

但是,當我打開一個直接指向我的文件的鏈接(運行Web服務器用於測試目的)時,Safari決定它可以自己讀取文件並自行顯示內容。這絕對不行。

請注意,如果我替換任何二進制文件(zip,...)並使用我的擴展名,文件關聯仍然可以工作。

在plist中,信息的代碼:

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeIconFiles</key> 
     <array> 
      <string>320.png</string> 
      <string>64.png</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>My File</string> 
     <key>CFBundleTypeRole</key> 
     <string>Viewer</string> 
     <key>LSHandlerRank</key> 
     <string>Owner</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.Company.Product.ext</string> 
     </array> 
    </dict> 
</array> 
<key>UTExportedTypeDeclarations</key> 
<array> 
    <dict> 
     <key>UTTypeConformsTo</key> 
     <array> 
      <string>public.data</string> 
      <string>public.content</string> 
      <string>public.text</string> 
      <string>public.plain-text</string> 
      <string>public.utf16-plain-text</string> 
      <string>public.utf16-external-plain-text</string> 
      <string>public.utf8-plain-text</string> 
     </array> 
     <key>UTTypeDescription</key> 
     <string>My File</string> 
     <key>UTTypeIdentifier</key> 
     <string>com.Company.Product.ext</string> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
      <key>public.filename-extension</key> 
      <string>ext</string> 
      <key>public.mime-type</key> 
      <string>application/octet-stream</string> 
     </dict> 
    </dict> 
</array> 

我的問題是:如何說服Safari瀏覽器無法打開文件本身?它甚至有可能嗎?我必須使用除「application/octet-stream」之外的某種MIME類型嗎?

回答

4

爲您的文件定義自定義MIME類型(即application/x-my.custom.type),並讓PHP或您的Web服務器爲它們提供服務。這應該有所幫助。

+0

這個伎倆! +1 – Jukebox

+0

這也適用於我。我還發現,在導出的類型UTI中設置文件擴展名既是必要的也是足夠的,而設置MIME類型既不是。 – Justin