K1.11.2deep link fallback设计

目标应用未安装时需要有回退路径而非直接失败

别名: 深链接回退 · deferred deep link · 未安装回退

概念解释

深链接的目标应用没装时,点击不能停在系统那句「无法打开」或空白。回退路径是预先准备好的下一条路:能完成同一任务的网页版、商店里带原目标的安装、或一份只读的内容副本。安装之后还应尽量回到当初那个对象,而不是让人装完从首页重新找。这条只谈「没装」时的去路,不谈装了以后要落到哪一屏,不谈从目标再走回来,也不谈参数校验。

机制

自定义 URL 方案在未安装时通常直接失败,系统没有默认网页可开。通用链接 / 应用链接把同一 URL 先交给网页,已安装再交给应用,未安装时至少还能打开浏览器——前提是这条 URL 在网上真有对应页,而不是一个只有应用能解析的私有方案。商店回退能解决「以后能用」,解决不了「现在这一下」:人点的是一条路线、一张票、一场正在开始的会议,去商店再回来,对象可能已经过期。延迟深链接(先装,首次启动再把原 URL 送进应用)把安装和落点接起来,但依赖安装过程中标识不被清掉。回退不是「随便给个首页」:网页若只是市场页,任务仍然断在没装这一步。

边界

受管设备禁止安装、也禁止打开外部浏览器时,回退可能只剩应用内说明「需要某某应用且当前无法安装」。没有网页等价物的能力(蓝牙设备调试、必须用安全元件的支付)不能假装有网页版,应说清缺的是哪项能力。商店地区不可用时,跳商店等于第二次失败,应改用可访问的网页或告知该地区没有该应用。恶意链接也会走回退进商店,回退页本身要来自可信域,不能把任意目标 URL 当商店参数。

怎么落地

  • 对外公开的链接优先用在网上也有对应页的 HTTP 地址;未安装时打开该页,已安装再交应用。
  • 若任务确实只能在应用里完成,未安装时说明原因并提供商店安装,同时把原对象标识带到首次启动,而不是装完停在欢迎页。
  • 验证:在一台卸掉目标应用的设备上点同一条链接。应出现可用的网页或带对象信息的安装路径,而不是系统错误。装完后首次打开仍应试图进入原对象;若只到欢迎页,回退只完成了分发,没有完成任务。

延伸

  • 同组K1.11.1 深链接指向应用内具体页面而非仅打开首页 · K1.11.3 跳转后返回来源应用的路径需要保留 · K1.11.4 深链接参数的合法性需要校验,否则成为攻击入口
  • 相邻K8.01 任务接续
  • 站内检索deferred deep link · Universal Links · fallback

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/K1.11.2