使用 CFBundleDocumentTypes:为什么我的应用程序没有显示在"Share"菜单中?



我正在尝试为所有可能的文件类型注册我的应用程序。我将以下内容添加到我的 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......

相关内容

最新更新