IOS 邮件应用程序中不再显示自定义文件类型

Posted

技术标签:

【中文标题】IOS 邮件应用程序中不再显示自定义文件类型【英文标题】:Custom file type no longer showing in IOS mail app 【发布时间】:2018-12-29 12:54:46 【问题描述】:

我在 appStore 上有一个名为 Quiz Maker 的应用。使用此应用程序,您可以创建一个测验,然后使用 Quiz Maker 应用程序将您的测验通过电子邮件发送给另一个用户。 为此,我创建了一个名为 .qzm 的自定义文件类型。 这几年来一直运行良好,但现在当您通过电子邮件将 .qzm 文件作为附件发送时,它不会在共享选择窗口(显示消息、电子邮件、添加到笔记、WhatsApp 等图标的窗口)中打开。 ..

我已经尝试了设置与 UTExportedTypeDeclarations 和 UTImportedTypeDeclarations 的所有组合,但是当用户点击用户邮件客户端中的附件时,我无法让文件/图标显示??

这是我的设置(为了安全起见,我已将公司名称更改为 com.myBusiness)

<key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Quiz Maker File</string>
        <key>UTTypeIconFiles</key>
        <array/>
        <key>UTTypeIdentifier</key>
        <string>com.myBusiness.quizMaker.qzm</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>qzm</string>
            </array>
        </dict>
    </dict>
</array>
<key>UTImportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Quiz Maker File</string>
        <key>UTTypeIconFiles</key>
        <array/>
        <key>UTTypeIdentifier</key>
        <string>com.myBusiness.quizMaker.qzm</string>
    </dict>
</array>
<key>UTTypeTagSpecification</key>
<dict>
    <key>public.filename-extension</key>
    <string>qzm</string>
</dict>



<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>Quiz Maker File</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.myBusiness.quizMaker.qzm</string>
        </array>
    </dict>
</array>

这是我设置为 pList 的屏幕截图:

以上所有代码都没有图标(.png),但我认为在这个阶段不会有什么不同,因为会显示一个空白图标。

对于解决此问题的任何帮助或想法,我将不胜感激。谢谢

【问题讨论】:

【参考方案1】:

问题已解决 - 如果您遇到同样的问题,请按照下面的代码进行操作:

 <key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>inCommand icon114</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>qzm</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.myBusiness.quizMaker.qzm</string>
        </array>
    </dict>
</array>


<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>qzm</string>
        <key>UTTypeIdentifier</key>
        <string>com.myBusiness.quizMaker.qzm</string>
        <key>UTTypeSize320IconFile</key>
        <string>inCommand icon114</string>
        <key>UTTypeSize64IconFile</key>
        <string>inCommand icon57</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>qzm</string>
            <key>public.mime-type</key>
            <string>application/quizMaker</string>
        </dict>
    </dict>
</array>

【讨论】:

什么是变化的重要部分? 我改变了很多结构/顺序,但真正产生影响的是 UTExportedTypeDeclarations 中的 public.filename-extension 后跟 public.mime-type。不知道为什么这最终使它起作用,但它确实起作用了。

以上是关于IOS 邮件应用程序中不再显示自定义文件类型的主要内容,如果未能解决你的问题,请参考以下文章

Open in... 自定义文件类型适用于 iOS 5、6 和 7,但不适用于 iOS 4

快速将文件类型与 iOS 应用程序关联

WinForms C#中自定义对象类型的跨进程拖放

iOS 10 自定义 URL 方案不再有效

iOS 8 自定义返回按钮

SwiftUI 自定义选取器标签未呈现