如何将iPhone应用程序与_every_文件类型相关联?

ddn*_*dnv 15 iphone objective-c ios

有iPhone应用程序"另一个邮件客户端"应该能够打开任何文件作为附件发送.所以,我想将此应用程序与任何扩展名的文件相关联.

在文档之后,我们应声明对具有根UTI类型的文件的支持public.data- 任何文件都应属于此类型.它有效,但根本没有.在这种情况下,我们的应用程序将无法打开任何文件,只能打开已在系统中注册的文件.例如,如果在任何应用程序(例如,dropbox)中我们将尝试使用UIDocumentInteractionController以未知扩展名(file.unknowntype)"打开..."文件,那么尽管我们已经已经存在,但答案将是否定的注册我们的应用程序,它支持根UTI类型public.data.但是,如果您安装另一个支持扩展名为(*.unknowntype)的文件的应用程序,那么我们的应用程序也可以打开这些文件并显示在"open in ..."应用程序列表中.

UPD: @Gabriel这是我的info.plist文件的CFBundleDocumentTypes的一部分:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>MyMail</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.data</string>
        </array>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Default</string>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>Icon29.png</string>
            ...
            <string>Icon114.png</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

fsp*_*rit 2

我用以下设置制作了一个应用程序

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>name</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.data</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

当我尝试从 Safari 打开 .pdf 时,此应用程序显示在“打开方式...”列表中。您可以制作一个示例应用程序并尝试一下吗?

更新:

似乎声明“public.data”(也尝试过 public.item、public.content)意味着文件,属于“系统 UTI 已知的所有”集合,而不是任何文件。因此,您将能够处理用户想要通过电子邮件发送的99% 的文件,但不是全部。另一种方法是导出您认为重要但默认情况下不在系统 UTI 中的 UTI。