为何通过Firebase动态链接安装App后引荐来源显示(not%20set)?
问题解决方案
一、Firebase动态链接先打开Chrome的问题
- 配置应用关联域名(App Links):在AndroidManifest.xml中添加对应intent-filter,关联你的动态链接域名,让系统直接唤起App而非中转浏览器。示例配置:
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="your-dynamic-link-domain.page.link" android:scheme="https" /> </intent-filter>
- 检查Firebase控制台动态链接设置,开启「直接打开应用」选项,避免浏览器中转。
- 若设备未安装App,动态链接引导至Play商店时出现浏览器属于正常情况,可通过配置Play即时应用或优化跳转逻辑改善体验。
二、安装引荐来源参数异常的问题
核心原因
Android Studio直接安装App时,不会触发Play商店的引荐来源追踪逻辑,因此默认返回utm_source=(not%20set)&utm_medium=(not%20set)。仅通过Play商店渠道(含动态链接引导安装)的App,才能正确获取对应参数。
解决步骤
- 传递自定义参数到动态链接:
创建动态链接时,将slug=xyzabc&password=*******作为自定义参数嵌入链接的link字段中,示例格式:
https://your-domain.page.link/?link=https://your-app.com/?slug=xyzabc&password=*******&apn=com.your.app.package
- 通过Firebase SDK获取参数:
用户通过动态链接打开(或安装后首次打开)App时,用动态链接SDK解析自定义参数,而非依赖Play引荐来源API。示例Kotlin代码:
Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { pendingDynamicLinkData -> pendingDynamicLinkData?.link?.let { deepLink -> val slug = deepLink.getQueryParameter("slug") val password = deepLink.getQueryParameter("password") // 处理获取到的参数 } } .addOnFailureListener(this) { e -> // 处理错误 }
- 按正确流程测试:
不要通过Android Studio直接安装,将App上传至Play商店内部测试渠道,通过动态链接引导至Play商店完成安装。首次打开App后,即可通过上述代码拿到期望的slug和password值。 - 依赖Play引荐来源API的补充方案:
若必须使用Play引荐来源,需在动态链接中正确设置utm参数,同时将自定义参数嵌入其中,示例格式:
https://your-domain.page.link/?link=https://your-app.com&apn=com.your.app.package&utm_source=firebase&utm_medium=dynamic_link&slug=xyzabc&password=*******
之后通过Google Play Install Referrer API获取参数,注意自定义参数需通过utm字段或link参数携带,再完成解析。
内容的提问来源于stack exchange,提问作者Mohit Siddhapura
相关产品推荐
相关产品推荐

