使用CFBundleDocumentTypes:为什么我的应用程序不会显示在“共享”菜单中?

时间:2014-02-21 14:56:20

标签: ios objective-c xamarin.ios

我正在尝试为所有可能的文件类型注册我的应用。我将以下内容添加到我的info.plist中:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>public.data</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.data</string>
            <string>public.content</string>
        </array>
    </dict>
</array>

如果我现在在Safari中打开PDF并点按Safari的“分享”按钮,则不会提供我的应用程序。但是,如果我点击PDF本身,顶部会显示一个“打开方式”按钮,并列出我的应用程序。

这不是一个真正的问题,但它会阻止用户将照片导入我的应用,因为照片应用中没有“打开”菜单。

我可以以某种方式注册“分享”菜单吗?

1 个答案:

答案 0 :(得分:3)

不幸的是,这是不可能的,因为:

Safari中的共享屏幕使用UIActivityViewController显示可以使用该页面执行的许多活动。这些活动在UIActivity.h中定义,通常是系统定义的活动,例如发布到Facebook 发布到Twitter 消息打印

要在该屏幕中显示非系统定义的活动,必须创建一个自定义UIActivity子类,然后使用这些子类的数组初始化UIActivityViewController

另一方面,“打开方式...”屏幕看起来很相似,但使用UIDocumentInteractionController显示可以打开指定网址的应用/ UTI(请勿使用Google UTI .. 。)