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

Posted

技术标签:

【中文标题】Open in... 自定义文件类型适用于 iOS 5、6 和 7,但不适用于 iOS 4【英文标题】:Open in... for custom file type works in iOS 5, 6 & 7 but not iOS 4 【发布时间】:2013-09-26 20:06:13 【问题描述】:

我有一个应用程序声明了一个自定义文件类型(只是一些 XML),当 ios 在 iOS 5、6 和 7 上遇到这个文件时,它知道如何处理它 - 我的应用程序启动并导入文件很好。

但是在 iOS 4.3.3 上,自定义文件类型似乎只是被认为是纯文本 - 电子邮件客户端显示它,并且没有提供在我的应用程序中打开文件的选项。

以下是我应用的 Info.plist 的相应部分:

    <key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>iBlueSky Format</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>uk.co.tenero.ibluesky</string>
        </array>
    </dict>
</array>

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>iBlueSky File</string>
        <key>UTTypeIdentifier</key>
        <string>uk.co.tenero.ibluesky</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>bsky</string>
            </array>
            <key>public.mime-type</key>
            <string>application/xml</string>
        </dict>
    </dict>
</array>

谁能发现我做错了什么?

iOS 3.2 支持像这样操作文件,所以它应该工作。

我打算在下一次重大更新中放弃对 iOS 4、5 和 6 的支持,但我想为旧设备上的用户提供更多具有此功能的版本。

【问题讨论】:

您对 iOS 4 上的用户数量有一些分析吗? 目前没有 - 我评估了一些分析解决方案,但还没有找到一个我完全满意的解决方案(有毒的条款和条件、缺少功能等) 并不是说它解决了这个问题,但您似乎不太可能需要再支持 iOS 4。 【参考方案1】:

发现问题。我需要将应用程序定义为文件类型的所有者编辑器。在更高版本的 iOS 中,将您的应用定义为所有者似乎足以暗示编辑者角色:

<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>

【讨论】:

以上是关于Open in... 自定义文件类型适用于 iOS 5、6 和 7,但不适用于 iOS 4的主要内容,如果未能解决你的问题,请参考以下文章

如何制作适用于 IOS 和桌面浏览器的自定义全屏视频按钮?

为 Phonegap 构建创建自定义 AdMob 插件(适用于 iOS 和 Android)

使用适用于 iOS 的 Google Maps SDK 优化自定义标记图像性能

带有自定义声音的 UILocalNotification 仅适用于 iOS 6.1 和 iOS 7.1,不适用于 iOS 7.0

FxCop 中的自定义规则仅适用于由特定类型的方法调用的方法

adjustsFontForContentSizeCategory 是不是适用于自定义字体?