Android端如何为深度链接添加图片、标题等元属性
常规动态深度链接添加标题、副标题、预览图实现方案
不需要依赖Firebase Deep Linking,常规深度链接的分享预览信息(即你说的标题、副标题、图片),本质是所有社交App、系统识别链接时,都会先请求链接对应的HTML文件,读取头部的元属性来渲染卡片,直接在你自己的服务端配置动态元标签即可实现。
适配你的动态URL格式
你的链接为动态路径格式:forms.mysitename.in/solve/{randomFormId},不同表单ID对应不同内容,因此不能使用静态写死的元标签,需要根据路径参数动态生成返回内容。
具体实现步骤
- 首先在你的域名对应的Web服务层(Nginx、后端服务、CDN边缘规则、SSR服务均可)拦截所有匹配
/solve/*规则的请求 - 从请求路径中提取
randomFormId参数,查询对应表单的实际信息:表单标题、表单简介(即你要的副标题)、表单专属预览图地址 - 将查询到的信息填充到HTML头部的标准元标签中,将拼接好的HTML返回给请求方即可,核心需要配置的标签如下:
<!-- OG标签,兼容90%以上社交平台、系统的链接预览识别 --> <meta property="og:title" content="替换为当前表单的实际标题" /> <meta property="og:description" content="替换为当前表单的副标题/简介内容" /> <meta property="og:image" content="替换为当前表单预览图的完整公网HTTPS地址" /> <meta property="og:url" content="替换为当前访问链接的完整地址" /> <meta property="og:type" content="website" /> <!-- 兼容X/Twitter、部分国内应用的卡片标签 --> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="与og:title内容保持一致" /> <meta name="twitter:description" content="与og:description内容保持一致" /> <meta name="twitter:image" content="与og:image内容保持一致" />
避坑提示
- 预览图必须是公网可直接访问的HTTPS链接,不能用相对路径、内网地址,建议尺寸为1200*630px,文件大小不超过5MB,否则会出现图片加载失败、不显示卡片的问题
- 如果你用的是纯客户端渲染的单页应用,不要在前端JS里动态修改meta标签——爬虫不会执行页面JS,只能拿到服务端最初返回的HTML内容,这种场景可以通过判断请求UA的方式,给爬虫请求返回拼接好元标签的静态HTML,给普通用户返回正常的单页应用内容即可
- 深度链接唤起逻辑和元标签配置互不冲突,可以在返回的HTML中加入端侧判断逻辑:手机端访问直接唤起App对应页面,PC端访问跳转网页版,爬虫访问返回带元标签的内容即可
- 配置完成后如果旧链接看不到预览,是各平台的缓存机制导致,等待缓存过期即可,不需要重复修改代码
内容的提问来源于stack exchange,提问作者Sambhav Khandelwal
相关产品推荐
相关产品推荐

