带社交元标签的Firebase动态链接在LinkedIn私聊预览跳转失败
LinkedIn私聊场景Firebase动态链接跳转异常排查方案
故障原因
- 核心问题为LinkedIn预览卡片跳转规则和Firebase动态链接默认社交元标签配置不兼容:LinkedIn渲染聊天消息内的链接预览卡片时,会直接取页面返回的
og:url元标签内容作为卡片的跳转目标;而Firebase动态链接会把传入的socialMetaTagParameters参数拼接成/s?socialXXX格式的地址作为og:url的返回值,并非你生成的短链地址,因此点击卡片就会跳转到这个无效路径出现空白页。 - 点击蓝色链接文本可正常跳转,是因为文本链接直接绑定了你生成的短链地址,没有走
og:url的取值逻辑,因此可以正常触发动态链接的重定向规则。
解决方案
方案1:调整动态链接配置,使用自有落地页承载社交元标签(最优)
该方案可以兼容所有社交平台的预览规则,也是官方推荐的动态链接最佳实践:
- 自行开发H5落地页,在页面头部写入对应业务的Open Graph标签(
og:title对应标题、og:description对应描述、og:image对应预览图、og:url对应你生成的动态短链地址),同时在落地页内写入应用唤起逻辑,用户访问落地页后自动跳转至你的应用或对应应用商店。 - 生成Firebase动态链接时,将
link参数指向你开发的业务落地页地址,同时移除socailMetaTagParameters配置,这样LinkedIn爬虫抓取页面时会直接读取你落地页内的og标签生成预览,卡片跳转地址也会正确指向你生成的短链。
调整后的代码示例:
Firebase.dynamicLinks.shortLinkAsync { // link替换为你自己的业务落地页地址,该页面已嵌入对应deal的og系列标签 link = Uri.parse("https://你的自有域名/deal/${deal.id}") domainUriPrefix = BuildConfig.DYNAMIC_LINK_DOMAIN // 移除原有socialMetaTagParameters配置 androidParameters(BuildConfig.application_id) { } iosParameters(iosBundle) { appStoreId = Constants.IOS_STORE_ID } }.addOnSuccessListener { result -> hideLoader() _all_deals_event.value = BaseEvent(AllDealsEvents.ShareLink(result.shortLink.toString())) }.addOnFailureListener { hideLoader() showToast("Something went wrong.") }
方案2:配置动态链接域名重定向规则(临时兼容)
如果你暂时不想开发落地页,可以通过配置域名重定向规则兼容该问题:
- 如果你使用的是自定义动态链接域名,可以在域名的CDN或服务端配置重定向规则,匹配所有
/s?*前缀的请求,统一302重定向到你的应用唤起地址,或者引导用户跳转至正确的短链解析路径。 - 如果你使用的是Firebase默认的
page.link域名,需要先在Firebase控制台绑定自定义域名后才能配置对应的重定向规则。
方案3:分渠道配置动态链接
如果你的分享功能可以区分分享渠道,可以针对LinkedIn渠道做特殊处理:
- 检测到用户选择分享到LinkedIn时,生成动态链接不传入
socailMetaTagParameters配置,LinkedIn会直接爬取link参数指向地址的元标签生成预览,也可以规避该问题。
内容的提问来源于stack exchange,提问作者Zar Saeed
相关产品推荐
相关产品推荐

