You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS应用在Photos应用分享面板显示及直接启动主APP传递文件的技术咨询

iOS应用在Photos应用分享面板显示及直接启动主APP传递文件的技术咨询

嘿,我刚好研究过这个问题,来给你梳理清楚整个逻辑:

首先,你遇到的核心问题是Photos应用的分享机制和普通文件类应用不一样:

  • 你在Info.plist里配置的CFBundleDocumentTypes是针对文件系统内的实体文件(比如Files里的图片、Voice Memos的音频),这类内容的分享是基于文件URL的,所以你的主APP能被识别到。
  • 但Photos里的图片/视频是存在系统的Photo Library中的,它们不是传统意义上的“文件”,而是以PHAsset的形式存在,所以主APP仅靠CFBundleDocumentTypes无法被Photos的分享系统识别,自然不会出现在分享面板里。

那你提到的Slack、Amazon、Pinterest这些大厂APP是怎么做到的?其实它们用的是Share Extension + 主APP跳转的组合方案,并非直接让主APP出现在分享面板,而是通过Extension间接实现“点击后启动主APP并传递内容”的效果,具体步骤是这样的:

  1. 配置App Group实现数据共享
    主APP和你的Share Extension需要开启同一个App Group(在Xcode的Target配置里,找到Signing & Capabilities,添加App Groups并设置同一个标识符,比如group.com.yourapp.share),这样两者才能共享数据。

  2. 创建并配置Share Extension

    • 在Xcode里新建一个Share Extension Target,在它的Info.plist中,找到NSExtension -> NSExtensionAttributes -> NSExtensionActivationRule,配置支持的内容类型,比如包含public.image、public.movie,或者直接针对Photo Library的com.apple.photo这类UTI,确保能接收Photos里的内容。
    • 同时把Extension的App Group也配置成和主APP一样的。
  3. 在Extension中处理内容并共享数据
    在Extension的ViewController里,通过extensionContext?.inputItems获取到分享的内容,拿到对应的PHAsset(或者把Asset导出成临时文件存到App Group的共享容器里),然后把关键信息(比如Asset的localIdentifier、临时文件路径)存到App Group的UserDefaults或者共享文件里。

  4. 引导用户打开主APP
    苹果不允许Extension无用户交互直接启动主APP,所以你需要在Extension里加一个简单的UI(比如一个按钮或者提示框),告诉用户“点击打开主APP继续处理”,然后用UIApplication.shared.open(_:options:completionHandler:)(iOS 10+)打开主APP的自定义URL Scheme(提前在主APP的Info.plist里配置CFBundleURLTypes)。

  5. 主APP接收并处理内容
    在主APP的AppDelegate(或者SceneDelegate,针对iOS 13+)里,实现application(_:open:options:)或者scene(_:openURLContexts:)方法,捕获URL跳转事件,然后从App Group里读取之前共享的内容信息,再去Photo Library里获取对应的PHAsset,或者处理临时文件,完成后续逻辑。

另外补充两点:

  • 如果你发现大厂的Extension在Photos分享面板里位置很靠前,那是因为系统会根据用户的使用频率自动排序常用的Extension,用的人多了自然会跑到顶部。
  • 虽然不能让主APP直接出现在Photos的分享面板里,但通过这个方案,用户点击Extension后可以快速跳转到主APP,几乎和直接启动主APP的体验一致,这也是目前唯一合规的实现方式。

备注:内容来源于stack exchange,提问作者Joe Thomson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:48:13