0

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

但是在添加一个额外的参数“meetingtoken”作为查询参数时,我没有收到值并且在 joinmeeting(it) 中出现错误:没有为参数 meetingToken 传递值。

虽然在传递单个参数时同样可以正常工作,但我需要进行哪些更改才能接收两个参数值。

目前它给我的错误是:

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

没有为参数“meetingToken”传递值

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

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)


}

会议 Utils.kt 文件开始会议

object MeetingUtils {


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

应用深层链接 url 字符串

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

这是分享代码

    private fun onShareMeetingCodeClick() {
    tilCodeCreateMeeting.setEndIconOnClickListener {

            binding.tilCodeCreateMeeting.error = null
            toast(getString(R.string.main_creating_dynamic_link))

            Firebase.dynamicLinks.shortLinkAsync {
                link = Uri.parse(getString(R.string.app_deep_link_url, getCreateMeetingCode(), getCreateMeetingToken() ))
                domainUriPrefix = getString(R.string.app_dynamic_link_url_prefix)
                androidParameters {}
                navigationInfoParameters {
                    forcedRedirectEnabled = true // Directly open the link in the app
                }
            }.addOnSuccessListener { result ->
                val shortDynamicLink = result.shortLink.toString()
                startShareTextIntent(
                    getString(R.string.main_share_meeting_code_title),
                    getString(R.string.main_share_meeting_code_desc, shortDynamicLink)
                )
            }.addOnFailureListener {
                toast(getString(R.string.main_error_create_dynamic_link))
            }

有人可以指导我如何接收超过 1 个参数的 getQueryparameter 值。提前致谢

4

1 回答 1

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>
于 2020-10-31T13:33:08.570 回答