Deep Link安装应用后触发的Intent及首次启动链路信息传递问题
关于Deep Link安装与启动的两个问题解答
问题1:通过Deep Link安装应用后,会触发何种Intent?
当用户通过Deep Link(不管是自定义Scheme链接,还是符合Android App Links规范的http/https链接)引导安装应用,首次启动应用时,系统会发送一个VIEW类型的Intent,具体特征如下:
- Intent的
action固定为android.intent.action.VIEW data字段会完整携带触发安装的那个Deep Link URL- 通常还会包含
android.intent.category.BROWSABLE和android.intent.category.DEFAULT这两个类别,保证应用能响应来自浏览器或其他应用发起的链接请求
另外要注意,如果你用的是Android App Links(http/https格式),需要在应用Manifest里正确配置<intent-filter>并完成网站验证,系统才会稳定地传递这个Intent。
问题2:Google Play下载链接的存储与Branch等SDK的传递机制
先给你明确结论:Google Play Store本身不会自动把用户点击的下载链接存储到应用里,你没办法直接从系统层面获取到这个原始链接。不过针对Deep Link场景,Branch这类专业SDK有一套成熟的机制来传递来源信息:
- 前置追踪逻辑:当用户点击带有Branch参数的链接跳转到Play Store时,Branch会把这个链接的信息和用户设备(通过广告ID、设备指纹或临时安装会话标识)关联起来,并存到自己的服务器上。
- 首次启动的信息传递:当应用首次启动并初始化Branch SDK时,SDK会向自己的服务器请求当前设备对应的关联链接数据,然后把这个信息注入到应用启动Intent的
data字段中——这和你的理解完全一致。同时,SDK还会提供专属的回调接口(比如BranchListener),让开发者可以直接获取解析好的Deep Link参数,不用手动去Intent里提取。 - 补充:如果不用这类SDK,想要追踪来源的话,你需要自己在跳转到Play Store的链接里附加自定义
referrer参数,然后通过Google Play Install Referrer API获取这些参数,但这种方式只能拿到简单的来源标识,没办法还原完整的Deep Link内容。
内容的提问来源于stack exchange,提问作者Snaker




