Flutter集成Firebase Dynamic Links时iMessage发送链接出现额外文本问题
问题根本原因
- 配置错误:你当前代码里
uriPrefix和link使用了两个不同的Firebase动态链接域名(分别是trainsolosoccer.page.link和trainsolotest.page.link),不符合Firebase动态链接的配置规范,导致短链生成后存在两次跳转逻辑,iMessage预加载链接元数据时会抓取到两次跳转的返回内容,拼接成多余文本展示。 - 分享逻辑适配问题:你调用share包时仅传入了纯URL,iOS系统原生分享面板在iMessage场景下,会自动把链接对应的OG标签(也就是你在
SocialMetaTagParameters中配置的标题、描述内容)和URL本身拼接成消息正文,不会只保留纯URL内容。
修复方案
- 修正动态链接配置
将link参数的域名替换为你自己的业务域名,不要使用另一个page.link后缀的动态链接域名,示例如下:
link: Uri.parse( 'https://你自己的业务域名.com/planId?planId=$planId&userId=$userId&planName=$planName'),
如果没有独立的业务域名,也可以直接复用uriPrefix的域名作为深层链接的前缀,确保两个配置的域名一致。
- 调整分享调用参数
不要直接传入纯URL进行分享,额外补充少量自定义文本,避免iMessage自动拼接OG标签内容到消息正文:
// 补充自定义分享文本,自定义文本可以根据业务需求修改 Share.share('我分享了一个训练计划给你,点击查看:$link', subject: '训练计划分享');
- 可选优化(如果不需要iMessage链接预览)
如果不需要iMessage展示链接预览卡片,可以在你的动态链接域名下配置robots.txt,禁止iMessage爬虫抓取链接元数据,或者升级firebase_dynamic_links包到最新稳定版,规避旧版本的iOS端适配问题。
内容的提问来源于stack exchange,提问作者greysongy
相关产品推荐
相关产品推荐

