【问题标题】:Firebase dynamic link: can`t create short linkFirebase 动态链接:无法创建短链接
【发布时间】:2018-11-01 15:42:10
【问题描述】:

所以,我已经像这样实现了FirebaseDynamicLinks

val link = "https://test/?promo=$uId"
    FirebaseDynamicLinks.getInstance().createDynamicLink()
            .setLink(Uri.parse(link))
            .setDomainUriPrefix("test.page.link")
            .setAndroidParameters(
                    DynamicLink.AndroidParameters.Builder("test")
                            .setMinimumVersion(1)
                            .build())
            .buildShortDynamicLink()
            .addOnSuccessListener { shortDynamicLink ->
                val mInvitationUrl = shortDynamicLink.shortLink.toString()
                log("test1 success $mInvitationUrl")
                //shareIntent(mInvitationUrl)
            }
            .addOnFailureListener {
                log("test1 fail")
                it.printStackTrace()
            }

但调用.buildShortDynamicLink() 会引发异常:

W: com.google.android.gms.common.api.ApiException: 400: Long link is not parsable: test.page.link/generatedLongLink [https://firebase.google.com/docs/dynamic-links/rest#create_a_short_link_from_parameters]

有趣的是:在浏览器中插入 test.page.link/generatedLongLink 可以按预期工作 - 在 android 上它会将我引导至 google 播放页面,而在 pc 上它会将我引导至我在创建动态链接时在 firebase consile 中指定的网站

那么调用.buildShortDynamicLink() 有什么问题,我该如何解决?

【问题讨论】:

  • 我一直建议使用"Divide et Impera" 方法并尝试使用更少的代码,然后再添加更多代码。因此,仅尝试基本参数以创建像 linkdomainUriPrefix(使用 https://)这样的短链接,仅此而已。然后添加Android ParametersiOS parameters,仅在最后添加listeners。此外,错误告诉您 Long Link is not parsable...所以尝试使用简单的https://test 然后添加查询字符串参数

标签: android firebase firebase-dynamic-links


【解决方案1】:

我为你试了这段代码

    val uId = 1234241

    val link = "https://www.test.com/$uId"
    FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse(link))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
            DynamicLink.AndroidParameters.Builder("test")
                .setMinimumVersion(1)
                .build())
        .buildShortDynamicLink()
        .addOnSuccessListener { shortDynamicLink ->
            val mInvitationUrl = shortDynamicLink.shortLink.toString()
            Log.d("AAA","test1 success $mInvitationUrl")
            //shareIntent(mInvitationUrl)
        }
        .addOnFailureListener {
            Log.d("AAA", "test1 fail")
            it.printStackTrace()
        }

并且效果很好

如果我没有将 "https://" 放在动态链接上,我会收到您的错误。

所以改变

.setDomainUriPrefix("test.page.link")

.setDomainUriPrefix("https://test.page.link")

一切正常:

【讨论】:

  • 为我工作!!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-22
  • 2023-01-26
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多