我正试图在我的应用程序中使用Firebase动态链接来实现推荐。
幸福的道路是:
当parameter
问题是,在这个场景中,步骤3在第一次应用程序启动时找不到任何数据,而当我在安装了应用程序之后重新单击链接时就会找到它。
--这是为引用程序生成链接的方式:
val parameters = new DynamicLink.SocialMetaTagParameters.Builder()
.setImageUrl(...)
.setTitle(...)
.build();
val link = Uri.parse("https://my.domain.com/path/?token=${jwtToken}");
val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(link)
.setSocialMetaTagParameters(parameters)
.setDomainUriPrefix("https://my.domain.com")
.setAndroidParameters(DynamicLink.AndroidParameters.Builder().build()))
.setIosParameters(...)
.setNavigationInfoParameters(
DynamicLink.NavigationInfoParameters.Builder()
.setForcedRedirectEnabled(true)
.build
).buildDynamicLink()通过以下方式缩短了联系:
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setDomainUriPrefix("https://my.domain.com/")
.setLongLink(dynamicLink.getUri())
.buildShortDynamicLink()
.addOnCompleteListener(activity, task -> {
if (task.isSuccessful() && task.getResult() != null) {
linkCallback.success(task.getResult().getShortLink().toString());
} else {
linkCallback.failure(task.getException());
}
})在应用程序打开时,链接在启动活动的onResume()方法中读取:
override fun onResume() {
super.onResume()
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent()) // getIntent() refers to the Activity's method
.addOnSuccessListener(activity) { data -> // Get deep link from result (may be null if no link is found)
val isReferralLink = data?.link?.toString()?.startsWith("https://my.domain.com/path") == true
val jwt = data?.link?.getQueryParameter("token")
// Here, data is null. <-------
// Other attempt :
data?.let { aiData ->
FirebaseAppInvite.getInvitation(aiData)?.let { result ->
// Here result is still null
}
}
}
}我在堆栈溢出线程上看到,它无法存活到beta跟踪安装,所以我尝试离开beta,并使用远程配置将其隐藏在生产跟踪中,但我没有看到任何区别。
我使用的版本是:
implementation 'com.google.firebase:firebase-dynamic-links:21.0.0'
implementation 'com.google.firebase:firebase-analytics:20.0.0'
implementation 'com.google.firebase:firebase-invites:17.0.0'问题:这里有什么东西我遗漏了吗?
提前感谢您的帮助!
编辑:
在这个场景中,正确地找到了链接和令牌。
当parameter
发布于 2021-12-09 14:08:54
好的,经过几天的测试和研究,我发现了它不起作用的原因。
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(activity) { data ->
// Some data reading
}在本例中,我使用了带有活动的addOnSuccessListener()作为参数,这使它能够意识到生命周期。在我的应用程序中,一个新用户(新安装)将被重定向到一个入职活动,这样监听器的活动就会暂停,回调也不会被触发。
=> TLDR:删除此活动参数解决了我的问题。
https://stackoverflow.com/questions/70184114
复制相似问题