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

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

CFBundleDocumentTypes   CFBundleTypeName public.data LSItemContentTypes  public.data public.content    

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

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

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

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

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

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

另一方面,“Open In …”屏幕看起来很相似,但是使用的是UIDocumentInteractionController ,它显示可以打开给定URL / UTI的应用程序(不要使用Google UTI …)