我的应用在iMessage的UIActivityViewController中

5
当我在iMessage中打开附加的图片并点击“分享”按钮时,我可以看到第三方应用程序的图标,例如“Path”或“Evernote”。问题是:我如何将自己的应用程序添加到此列表中?

@rudensm:我也在尝试做同样的事情。你能给我提供一个例子吗?我输入了Herzbube提供的完全相同的代码,但仍然无法看到我的应用程序。 - Hitu Bansal
@HituBansal:你最好使用应用扩展来处理这些情况。 - rudensm
@rudensm:我正在使用PhoneGap开发我的应用程序,对iOS完全不熟悉。您能提供一个示例代码或样本代码吗? - Hitu Bansal
@HituBansal:选定的答案同样解决了您的问题。您无需在此处编写任何代码,只需将必要的键值对放在Info.plist文件中即可。 - rudensm
@rudensm:我把下面的代码放到了我的project-info.plist文件中,但是在共享面板中看不到我的应用程序。 - Hitu Bansal
显示剩余2条评论
1个回答

6

与 URL 方案不同,您需要向应用程序添加文档类型。尝试将以下片段添加到您的 Info.plist 中:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>public.jpeg</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.jpeg</string>
        </array>
    </dict>
</array>

使用此片段(特别是使用LSItemContentTypes键),您声明您的应用程序是一个编辑器,用于具有统一类型标识符(UTI)public.jpeg的文档。由于系统已声明此UTI,因此我认为您不需要在应用程序的Info.plist中包含UTI声明。
您可以在名为System-Declared Uniform Type Identifiers的Apple文档中找到所有系统声明的UTI。如果您对UTI不熟悉,您还应该阅读Apple文档Uniform Type Identifier Concepts
最后但同样重要的是,不要忘记查阅信息属性列表键参考,以了解您应该为核心基础键CFBundleTypeRoleLSHandlerRank指定什么。
顺便说一句:这个优秀的SO答案也详细介绍了如何使用UTIs,特别是如果您需要声明自己的应用程序特定UTI。

@herzbube。我已将上述代码添加到我的project-info.plist文件中,但仍然无法看到。您能帮我解决一下吗?我正在iOS8上进行检查。 - Hitu Bansal
@HituBansal 这在iOS 8中仍然有效。我能想到的唯一可能会让你困惑的事情是,在某些应用程序(例如DropBox)中,您可能首先必须选择“打开”,然后才会显示您的应用程序。如果这不是您的问题,则应提出一个新问题,在那里您有更多的空间可以编写(例如,粘贴您正在使用的Info.plist片段)。 - herzbube
@herzbube:感谢你的回复。让我再试一次,否则我会发布新的plist代码。谢谢。 - Hitu Bansal
@herzbube: 我没能做到,我已经发布了一个包含 plist 文件的新问题。看看你能否帮助我解决这个问题。 https://dev59.com/IIvda4cB1Zd3GeqPdsTh - Hitu Bansal
@herzbube:你能否提供给我相同问题的解决方案? - Hitu Bansal
这个在 iOS 14 和 iOS 15 上还能用吗?我无论如何都不能让它在图片上工作,但对于 PDF 文件来说它运行良好。 - user1195883

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接