HarmonyOS 7 新特性(三十六)|App Linking 延迟链接全链路 封面

用户从广告、社交分享或二维码点击一个内容链接时,应用可能还没有安装。普通深链会在安装阶段丢失目标,用户首次启动只能落到首页。HarmonyOS 7 配套的 App Linking 延迟链接能力,解决的是“点击—应用市场—安装—首次启动—还原目标内容”这一条跨阶段链路。

真正落地时,问题远不止取回一个 URL。链接必须可信、路由必须稳定、参数需要最小化、归因不能重复、首次启动要可恢复。本文给出一套从链接模型到验收指标的工程方案。

一、把安装前后的意图视为同一事务

用户点击时产生访问意图,安装只是中间步骤。建议为每次意图生成 linkId,服务端保存短生命周期目标和活动信息,客户端只接收可验证引用。

interface DeferredIntent {
  linkId: string
  target: 'ARTICLE' | 'PRODUCT' | 'CAMPAIGN'
  targetId: string
  campaignId?: string
  issuedAt: number
  expiresAt: number
  nonce: string
}

不要把手机号、订单号或用户画像直接放在 URL 查询参数里。

二、基础链接、市场直达和延迟链接分层

应用已安装时,App Linking 直接拉起目标内容;未安装时,可进入应用市场;完成安装后,延迟链接恢复原目标。三条路径必须最终调用同一个路由解析器。

type LinkSource = 'APP_LINK' | 'DEFERRED_LINK' | 'PUSH' | 'QR'

interface RouteIntent {
  route: string
  params: Record<string, string>
  source: LinkSource
  linkId?: string
}

不要为延迟链接另写一套页面跳转逻辑,否则权限、登录和页面不存在等规则会分叉。

三、域名校验是安全边界

App Linking 使用 HTTPS 链接和域名关联提高可靠性。域名、应用标识和路径规则应纳入发布检查,避免测试域名或旧证书进入生产。

const allowedHosts = new Set(['link.example.com'])
const allowedRoutes = new Set(['/article', '/product', '/campaign'])

function validateUrl(url: URL): boolean {
  return url.protocol === 'https:' &&
    allowedHosts.has(url.host) &&
    allowedRoutes.has(url.pathname)
}

即使系统完成域名关联,应用仍应校验路径和参数;服务器也要验证签名和有效期。

HarmonyOS 7 新特性(三十六)|App Linking 延迟链接全链路 核心链路

四、路由协议必须版本化

营销链接可能在应用多个版本中长期存在。路径和参数变化时要保持兼容,不能发布新版后让旧二维码全部失效。

interface LinkPayloadV2 {
  v: 2
  target: string
  id: string
  fallback?: string
}

function migratePayload(input: Record<string, string>): LinkPayloadV2 {
  if (input.v === '2') return parseV2(input)
  return { v: 2, target: input.type, id: input.contentId }
}

服务端短链最好只保存稳定 linkId,具体路由由可更新映射解析。

五、首次启动先完成基础初始化

延迟链接可能在首次启动最早阶段到达,而账号、数据库和路由容器尚未准备。不要立刻跳转,先进入有界队列,等必要服务就绪。

class LaunchIntentQueue {
  private pending?: RouteIntent
  private ready = false

  push(intent: RouteIntent) {
    this.pending = intent
    this.flush()
  }
  markReady() {
    this.ready = true
    this.flush()
  }
  private flush() {
    if (!this.ready || !this.pending) return
    router.open(this.pending)
    this.pending = undefined
  }
}

队列只保存最新有效意图,进程重启时可使用加密存储恢复一次。

六、登录和权限是路由守卫

目标页可能要求登录、地区、会员或权限。链接解析器负责解释目标,路由守卫负责决定下一步。登录成功后应回到原目标,而不是固定回首页。

async function openWithGuards(intent: RouteIntent) {
  const target = routeRegistry.resolve(intent)
  if (target.requiresLogin && !session.isSignedIn()) {
    return auth.start({ returnTo: intent })
  }
  if (!target.exists) return router.open('/link-expired')
  return router.open(target.path, target.params)
}

敏感操作只能导航到确认页,不能通过链接直接完成支付、删除或授权。

七、消费语义必须幂等

首次启动回调、生命周期恢复和用户重复点击都可能多次返回同一个延迟链接。使用 linkId + accountId 建立消费记录。

async function consumeOnce(intent: DeferredIntent, accountId: string) {
  const key = `${intent.linkId}:${accountId}`
  if (await consumedStore.has(key)) return 'DUPLICATE'
  await consumedStore.put(key, intent.expiresAt)
  return 'FIRST'
}

内容浏览可以允许重复打开,但优惠领取和归因上报必须幂等。

八、归因和隐私分开设计

“用户成功到达内容”和“把转化归因给某活动”是两个事件。归因数据只保留活动、渠道、时间和匿名设备/账户标识,不应读取与转化无关的个人数据。

type AttributionEvent = {
  linkId: string
  campaignId?: string
  stage: 'CLICK' | 'INSTALL' | 'OPEN' | 'TARGET_VIEW'
  occurredAt: number
  anonymousId: string
}

服务端处理乱序和重复事件,客户端不伪造完整漏斗。

九、链接失效也要有好体验

内容下架、活动结束、版本过低或链接过期时,返回明确页面,解释原因并推荐安全替代内容。不要跳空白页,也不要无限重试接口。

网络失败可展示目标摘要并提供重试。若参数校验失败,记录匿名错误码并回到安全首页,不显示内部堆栈。

十、测试跨越安装边界

测试不能只在已安装应用中点击链接。至少覆盖未安装点击、应用市场跳转、安装后首次启动、登录后返回、进程被杀、链接过期、旧版本协议、同一链接重复点击和多账号切换。

自动化记录每阶段时间戳,计算点击到目标页总耗时、目标到达率、错误路由率、重复归因率和登录后丢失率。

const stages = ['CLICK', 'MARKET', 'INSTALL', 'FIRST_OPEN', 'TARGET_VIEW'] as const
type Stage = typeof stages[number]

十一、上线清单

  • 链接使用 HTTPS、受控域名和路径白名单;
  • URL 不包含不必要的个人或订单敏感信息;
  • 基础链接和延迟链接共用路由解析器;
  • 路由协议支持版本迁移和旧链接;
  • 首次启动使用队列等待依赖就绪;
  • 登录后能回到原目标;
  • 消费和归因具有幂等性;
  • 过期、下架和弱网都有安全落地页;
  • 完整安装链路在真实设备验证。

HarmonyOS 7 新特性(三十六)|App Linking 延迟链接全链路 验收清单

结语

延迟链接的本质不是“安装后拿到一个 URL”,而是跨越浏览器、应用市场和首次启动保持用户意图。用稳定链接 ID、版本化路由、一次性消费和明确回退串起整条链路,才能真正提升转化,而不是把首页换成另一个不可控入口。

官方参考

  • App Linking Kit:https://developer.huawei.com/consumer/cn/agconnect/App-linking
  • 使用 App Linking 实现应用间跳转:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V14/app-linking-startup-V14
  • 2026 年 6 月开发者月刊:https://developer.huawei.com/consumer/cn/monthly/202606
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐