在ObjectiveC的共享表中添加一个打开方式选项

时间:2019-03-20 21:50:01

标签: ios objective-c iphone ios12

我熟悉IOS上的共享功能。我使用

在我的应用程序中共享项目
[[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];

我的问题是如何为我的应用程序的共享表添加打开方式选项?

2 个答案:

答案 0 :(得分:2)

根据正在打开的内容和设备已安装的应用程序支持的文档类型,可以使用“打开方式...”选项。您无法在应用中进行更改。

另一方面,如果要显示在应用程序“打开方式”列表中的应用程序是您可以控制的其他应用程序,则可以将CFBundleDocumentTypes键添加到这些应用程序的info.plists中。这告诉iOS应用可以打开某些类型的文件。您可以使用public.jpeg等UTI指定受支持的文件类型,并且当用户尝试从UIActivityViewController打开这些文件类型之一时,ios的选项中将包括支持的应用程序。

对此进行了很好的讨论:How do I get my application to show up in the Open in... menu

这是有关UTI的讨论:Uniform Type Identifier Concepts

例如,如果您的一个应用程序支持打开jpeg图像和任何文本文件,则可以将其添加到info.plist:

<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>Images</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.jpeg</string>
        </array>
    </dict>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>text</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.plain-text</string>
        </array>
    </dict>
</array>

但是,再次,如果您尝试从显示活动控制器的应用程序中操作显示为“打开方式”选项的应用程序,则不能。您只能使自己的应用程序宣传它们支持某些文档类型,并从iOS上建立其“打开方式”选项。

答案 1 :(得分:0)