无法在Firebase动态链接中接收getquery参数的值

时间:2020-10-30 09:54:13

标签: firebase kotlin firebase-dynamic-links android-deep-link

我必须在firebase deeplink中添加一个额外的参数作为“ meetingToken”。

但是在添加一个额外的参数“ meetingtoken”作为queryparameter时,我无法接收该值并在joinmeeting(it)中出错:参数meetingToken没有传递任何值。

虽然在传递单个参数时效果很好,但是我需要进行哪些更改才能接收两个参数值。

当前它给我以下错误:

zookeeper-server-start.sh

没有传递参数'meetingToken'的值

链接= https://example.in/?meetingCode=myuser?meetingToken=rtgdhh.tywufgsioqpp

 deepLink?.getQueryParameter("meetingCode")?.let { joinMeeting(it) }

开会Utils.kt文件开始会议

private fun handleDynamicLink() {
    Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnSuccessListener { pendingDynamicLinkData ->
            val deepLink: Uri?
            if (pendingDynamicLinkData != null) {
                deepLink = pendingDynamicLinkData.link

on android debugging its generating the following firebase Link = https://example.in/?meetingCode=userroom?meetingToken%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1Ni

                deepLink?.getQueryParameter("meetingToken")
                deepLink?.getQueryParameter("meetingCode")?.let { joinMeeting(it) }


            }
        }
        .addOnFailureListener { _ ->
            toast(getString(R.string.main_error_fetch_dynamic_link))
        }
}



 private fun joinMeeting (meetingCode:String, meetingToken:String) {
    MeetingUtils.startMeeting(
        this, meetingCode,
    meetingToken)


}

应用深层链接网址字符串

object MeetingUtils {


fun startMeeting(context: Context,  meetingCode: String, meetingToken: String)

这是共享代码

<string name="app_deep_link_url">https://example.in/?meetingCode=%1$s?meetingToken=%2$s</string>

有人可以指导我如何为多个参数接收getQueryparameter的值。在此先感谢

1 个答案:

答案 0 :(得分:0)

在深链接上附加第二个参数时,应使用&而不是?。另外,由于在深层链接中配置了多个参数,因此应该对配置的深层链接进行URL编码。您的示例深层链接应如下所示。

link=https%3A%2F%2Fexample.in%2F%3FmeetingCode%3Dmyuser%26meetingToken%3Drtgdhh.tywufgsioqpp

通过对深层链接进行URL编码,FDL将能够区分出属于深层链接的参数。

Uri.parse(getString(R.string.app_deep_link_url, getCreateMeetingCode(), getCreateMeetingToken())) 

我不确定您要在getString上传递多个参数以获得深层链接值的方法。

创建StringBuilder或手动附加它是否有意义?

val deepLink = getString(R.string.app_deep_link_url)+ "%2F%3FmeetingCode%3D$meetingCode%26meetingToken%3D$meetingToken";
link = Uri.parse(deepLink);

strings.xml中的“ app_deep_link_url”为

<string name="app_deep_link_url">https%3A%2F%2Fexample.in</string>