为什么我不能注册我的iOS应用程序来处理图像文件类型?

时间:2012-02-08 16:49:15

标签: iphone objective-c ios cocoa-touch

我在向应用程序注册图像文件类型时遇到问题。我尝试将下面的代码添加到我的plist中,但没有任何反应。

<key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeName</key>
            <string>Scary Bug Document</string>
            <key>LSHandlerRank</key>
            <string>Alternate</string>
            <key>CFBundleTypeRole</key>
            <string>None</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>public.image</string>
            </array>
        </dict>
    </array>

我注意到我可以注册其他文件类型,例如文本(将public.image更改为public.text),但它不能用于图像(“打开方式...”菜单没有显示我的应用程序)。

可能导致这种情况的原因,我该如何解决?

7 个答案:

答案 0 :(得分:6)

现在可以从iOS 7中的邮件应用程序打开图像了,这有点令人费解:

点按并按住图像。 点击“快速查看”以使图像全屏显示。 点击图像以显示顶部工具栏。 点击右上角的打开按钮。 向左滚动列表以查找您的应用。

请务必为您感兴趣的图像类型设置捆绑文档类型。

答案 1 :(得分:6)

Dimitri Bouniol通过快速查看在iOS 7中运行的响应是正确的。 我在下面的info.plist中添加了以下内容,我是如何让它为我的应用程序工作的。 仍然没有想出如何分享照片或相机滚动工作。

  <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>myapp image</string>
            </array>
            <key>CFBundleTypeName</key>
            <string>public.png</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSHandlerRank</key>
            <string>Alternate</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>public.png</string>
                <string>public.jpeg</string>
            </array>
        </dict>
    </array>
    <key>UTImportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.image</string>
            </array>
            <key>UTTypeIdentifier</key>
            <string>public.png</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>com.apple.ostype</key>
                <string>PNG</string>
                <key>public.filename-extension</key>
                <array>
                    <string>png</string>
                </array>
                <key>public.mime-type</key>
                <string>image/png</string>
            </dict>
        </dict>
        <dict>
            <key>UTTypeIdentifier</key>
            <string>public.jpeg</string>
            <key>UTTypeReferenceURL</key>
            <string>http://www.w3.org/Graphics/JPEG/</string>
            <key>UTTypeDescription</key>
            <string>JPEG image</string>
            <key>UTTypeIconFile</key>
            <string>public.jpeg.icns</string>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.image</string>
                <string>public.data</string>
            </array>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>com.apple.ostype</key>
                <string>JPEG</string>
                <key>public.filename-extension</key>
                <array>
                    <string>jpeg</string>
                    <string>jpg</string>
                </array>
                <key>public.mime-type</key>
                <string>image/jpeg</string>
            </dict>
        </dict>
    </array>

答案 2 :(得分:2)

尝试:

<key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeName</key>
            <string>Scary Bug Document</string>
            <key>LSHandlerRank</key>
            <string>Alternate</string>
            <key>CFBundleTypeRole</key>
            <string>None</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>public.png</string>
                <string>public.jpg</string>
            </array>
        </dict>
    </array>

另外,请参阅StackOverflow上的other answer

答案 3 :(得分:2)

经过一些研究后,似乎无法为图像注册应用程序。 谢谢你的回答。

答案 4 :(得分:1)

public.image是一种抽象类型,请尝试注册public.png或public.jpeg等

答案 5 :(得分:0)

操作系统不允许您在应用中打开图片。我也尝试了很多排列和排列。组合,并在Apple支持的更多帖子中确认。

答案 6 :(得分:0)

根据Apple的文档,“要添加文档类型,请执行以下操作:

  • 单击“文档类型”的披露按钮以打开文档类型。
  • 在“类型”部分中,为新类型填写UTI。
  • 对于键值类型:CFBundleTypeRole。
  • 对于值类型:编辑器。
  • 对于键值类型:LSHandlerRank。
  • 对于值类型:所有者。”

这对我有用public.image作为UTI。