使用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 …)