K1.11.2deep link fallback设计
目标应用未安装时需要有回退路径而非直接失败
别名: 深链接回退 · deferred deep link · 未安装回退
概念解释
深链接的目标应用没装时,点击不能停在系统那句「无法打开」或空白。回退路径是预先准备好的下一条路:能完成同一任务的网页版、商店里带原目标的安装、或一份只读的内容副本。安装之后还应尽量回到当初那个对象,而不是让人装完从首页重新找。这条只谈「没装」时的去路,不谈装了以后要落到哪一屏,不谈从目标再走回来,也不谈参数校验。
机制
自定义 URL 方案在未安装时通常直接失败,系统没有默认网页可开。通用链接 / 应用链接把同一 URL 先交给网页,已安装再交给应用,未安装时至少还能打开浏览器——前提是这条 URL 在网上真有对应页,而不是一个只有应用能解析的私有方案。商店回退能解决「以后能用」,解决不了「现在这一下」:人点的是一条路线、一张票、一场正在开始的会议,去商店再回来,对象可能已经过期。延迟深链接(先装,首次启动再把原 URL 送进应用)把安装和落点接起来,但依赖安装过程中标识不被清掉。回退不是「随便给个首页」:网页若只是市场页,任务仍然断在没装这一步。
边界
受管设备禁止安装、也禁止打开外部浏览器时,回退可能只剩应用内说明「需要某某应用且当前无法安装」。没有网页等价物的能力(蓝牙设备调试、必须用安全元件的支付)不能假装有网页版,应说清缺的是哪项能力。商店地区不可用时,跳商店等于第二次失败,应改用可访问的网页或告知该地区没有该应用。恶意链接也会走回退进商店,回退页本身要来自可信域,不能把任意目标 URL 当商店参数。
怎么落地
- 对外公开的链接优先用在网上也有对应页的 HTTP 地址;未安装时打开该页,已安装再交应用。
- 若任务确实只能在应用里完成,未安装时说明原因并提供商店安装,同时把原对象标识带到首次启动,而不是装完停在欢迎页。
- 验证:在一台卸掉目标应用的设备上点同一条链接。应出现可用的网页或带对象信息的安装路径,而不是系统错误。装完后首次打开仍应试图进入原对象;若只到欢迎页,回退只完成了分发,没有完成任务。