我正在尝试为所有可能的文件类型注册我的应用程序。我将以下内容添加到我的 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本身,顶部会出现一个"打开方式"按钮,并列出我的应用程序。
这不是一个真正的问题,但它会阻止用户将照片导入我的应用程序,因为照片应用程序中没有"打开方式"菜单。
我也可以以某种方式注册"共享"菜单吗?
不幸的是,这是不可能的,因为:
Safari 中的共享屏幕使用 UIActivityViewController
来显示许多可对页面执行的活动。这些活动在UIActivity.h
中定义,通常是系统定义的活动,例如发布到Facebook,发布到Twitter,消息,打印等。
要使非系统定义的活动出现在该屏幕中,必须创建自定义UIActivity
子类,然后使用这些子类的数组初始化UIActivityViewController
。
"打开..."另一方面,屏幕看起来很相似,但使用的是显示可以打开给定 URL/UTI 的应用程序的UIDocumentInteractionController
(不要谷歌 UTI......