
别让用户只会截图:用 AI + ShareLink 给 iOS 页面接上系统分享
这一技教你先用分享规格表定义用户要带走的链接、文案和预览,再让 AI 用 SwiftUI ShareLink 接上系统分享面板。PM 不用自制弹窗,也能用真机清单验收分享内容是否可打开、可读且不泄露隐私。
用户完成一次测评、生成一张路线、收藏一条清单,下一步往往不是继续点你的 App,而是发给别人。只让他截图,是在逼他自己裁图、复制、解释,还会把你希望他带出去的标题、链接和上下文全丢掉。
ShareLink 适合补这个缺口。它是 SwiftUI 里的系统分享入口,Apple 把它定义为「控制分享呈现的 view」;用户点一下,就能打开系统分享界面。Apple 文档也标出它在 iOS 16.0 起可用。1这招对独立做 iOS 前端的 PM 很友好:你不需要先设计一套分享弹窗,也不用让 AI 从零造分享面板。先把「分享什么、给谁看、点出去后是否能打开」说清楚,再让 AI 把
ShareLink 接到页面里。先判断:哪些页面值得加分享
不是每个页面都要加分享。适合加
ShareLink 的页面,通常有一个共同点:用户看完后,天然想把这条内容交给另一个人。可以先从这几类页面里挑一个:
- 结果页:AI 生成的行程、饮食建议、训练计划、测评报告。
- 详情页:一篇文章、一个商品、一张活动卡、一条收藏记录。
- 邀请页:推荐好友、组队、协作编辑、家庭成员加入。
- 票据页:订单确认、预约成功、报名结果。
先别让 AI 写代码。先写一句产品判断:
这个页面的分享按钮,是为了让用户把「可打开的链接」发给别人,还是只把「一段说明文字」发出去?
如果答案是「别人必须能打开同一个页面」,优先分享 URL。如果答案是「只要把结果告诉别人」,可以分享一段文本。Create with Swift 的示例也把 URL、标题、说明、预览作为
ShareLink 的常见配置方式。2技巧原理:把分享交给系统,但把内容说清楚
ShareLink 做的不是「帮你生成海报」,而是把你准备好的内容交给系统分享面板。Apple 的设计指南强调,好的分享体验应该简单、响应快,并让用户围绕内容继续沟通。3对 PM 来说,可以把它拆成两层:
- 系统层:iOS 负责弹出分享面板,列出信息、邮件、备忘录、社交 App 等可用去向。Hacking with Swift 的示例也说明,提供 URL 后,iOS 会展示能处理这类数据的 App。4
- 产品层:你决定分享出去的内容长什么样,包括链接、按钮文案、邮件标题、附带说明和预览。
有一个边界要记住:
ShareLink 分享的内容需要符合 Transferable 这套传输协议;URL 这类系统类型已经能直接用,复杂自定义对象才需要额外处理。Apple 对 Transferable 的定义是:描述一个类型如何与拖放、复制粘贴等传输 API 交互。5所以你的第一版别从「分享整个自定义模型」开始。先分享一个 URL,或者一段能独立读懂的文本。等页面稳定后,再考虑图片、文件或自定义数据。
怎么用:给 AI 一张分享规格表
把下面这张表填完,再交给 AI。表格比一句「帮我加分享」更稳,因为 AI 知道要改哪个页面、分享什么、怎么验收。
| 你要说明的事 | 示例写法 |
|---|---|
| 加在哪个页面 | 在 PlanResultView 右上角加分享按钮 |
| 用户分享什么 | 分享当前行程结果页的公开 URL |
| 按钮长什么样 | 使用系统分享图标,文案为「分享」 |
| 附带什么说明 | 邮件或信息里带一句「这是我生成的 3 天游玩计划」 |
| 预览怎么显示 | 预览标题用行程名称,图片先不用 |
| 不允许分享什么 | 不带用户手机号、内部备注、未公开草稿内容 |
| 怎么验收 | 真机点分享,发到信息和备忘录,各打开一次 |
然后把这段指令丢给 AI 编码工具:
请在 SwiftUI 的 PlanResultView 里增加系统分享入口。
目标:用户可以把当前行程结果页分享给别人。
前置:项目最低支持 iOS 16;如果当前页面拿不到公开 URL,请先告诉我缺哪个字段,不要伪造链接。
实现要求:
1. 使用 ShareLink,不要自制分享弹窗。
2. item 使用 plan.publicURL。
3. 按钮使用系统分享图标和「分享」文案。
4. subject 使用行程标题,message 使用一句简短说明。
5. 不要把用户手机号、调试字段、内部备注放进分享内容。
6. 改完后告诉我应该在哪些真机场景验收。如果 AI 返回的代码很长,你只需要抓住这几个关键词:
ShareLink、item、subject、message、Label。Apple 的 init(item:subject:message:) 文档说明,这个初始化方式会创建一个能呈现分享界面的实例。6最小形态通常像这样:
ShareLink(
item: plan.publicURL,
subject: Text(plan.title),
message: Text("这是我生成的 3 天游玩计划")
) {
Label("分享", systemImage: "square.and.arrow.up")
}不用在第一版追求花哨。先确认分享出去的主内容正确,再让 AI 调按钮位置、图标样式和预览。
两个容易踩坑的地方
1. subject 和 message 不是每个 App 都会照单全收
Hacking with Swift 提醒过,分享时 URL 是最重要的内容,目标 App 对 subject 和 message 的使用方式不一样:有些用标题,有些用说明,有些两者都用。4
所以验收时别只看一个目标 App。至少试三类:信息、邮件、备忘录。只要主链接或主文本稳定出现,就算第一版合格;标题和说明可以按目标 App 的表现继续微调。
2. 预览要服务识别,不要暴露隐私
SharePreview 是给分享界面用的预览信息,Apple 把它定义为「在分享预览中展示某个类型的表示」。7PM 可以这样要求 AI:预览标题用公开标题,预览图先用页面已有封面;不要把用户头像、手机号、订单号、内部备注放进预览。分享是往外发的动作,默认按「会被转发给陌生人」来检查。
PM 的真机验收清单
把代码合进去后,别只在模拟器里点一下。Hacking with Swift 也提到,模拟器里的分享目标可能很少,有些还不一定能正常工作;真实设备上的结果更接近用户会看到的样子。4
照这 6 步验收:
- 在真机打开目标页面,确认分享按钮不挡住主要操作。
- 点分享,确认系统分享面板能弹出,而不是跳到自制弹窗。
- 发到信息,检查链接或正文能否被对方读懂。
- 发到邮件,检查 subject 是否像标题,message 是否像说明。
- 存到备忘录,检查内容是否还保留关键上下文。
- 回到 App,再点一次分享,确认不会重复生成错误链接或带出上一个页面的数据。
最后再做一次隐私检查:分享内容里不应该出现手机号、邮箱、内部 ID、调试字段、未发布草稿。只要发现一个,就把缺陷单写给 AI:
分享内容包含不该外发的信息:{具体字段}。
请只保留公开标题、公开 URL 和一句说明。
不要分享用户个人信息、内部备注、调试字段。
改完后列出分享出去的字段清单。这就是今天的最小动作:挑一个用户天然想转发的页面,先用 URL 版
ShareLink 接上系统分享。别先做海报,别先做复杂文件导出。让用户能把页面发出去,下一步才有资格谈分享转化。参考ソース
- 1ShareLink | Apple Developer Documentation
- 2Using the share sheet to share content in a SwiftUI app
- 3Collaboration and sharing | Apple Developer Documentation
- 4How to let the user share content with ShareLink - a free Hacking with iOS: SwiftUI Edition tutorial
- 5Transferable | Apple Developer Documentation
- 6init(item:subject:message:) | Apple Developer Documentation
- 7SharePreview | Apple Developer Documentation
関連コンテンツ
- ログインするとコメントできます。
More from this channel›
- 别让设置每次重置:用 AI + AppStorage 给 iOS 偏好做本地保存
- 别让头像上传卡在权限坑:用 AI + PhotosPicker 给 iOS 接上相册选择
- 别让误触删掉成果:用 AI + confirmationDialog 给 iOS 危险操作加二次确认
- 别让列表像没更新:用 AI + refreshable 给 iOS 页面加下拉刷新
- 别让按钮像没反应:用 AI + sensoryFeedback 给 iOS 操作加触感
- 别让键盘打断用户:用 AI + FocusState 给 iOS 表单接上下一项
- 别让空页面像坏了:用 AI + ContentUnavailableView 给 iOS 补空状态
- 别让用户翻列表:用 AI + searchable 给 iOS 页面加搜索框
