Android应用链接无法与Chrome自定义选项卡一起使用

12
我有一个应用程序,使用应用链接在应用程序外的浏览器中进行登录,并在完成登录后重定向回来。
这在Android原生浏览器中可以正常工作,但在使用Chrome自定义标签时会失败。用户在自定义标签中登录,但无法重定向回应用程序,因此我想知道是否可能像在原生浏览器中那样在自定义标签中使用应用链接?
清单配置
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data
    android:host="my-host"
    android:scheme="https" />

在原生浏览器中的可行实现

val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
ContextCompat.startActivity(context, intent, null)

使用Chrome自定义选项卡时重定向失败

val customTabsIntent = CustomTabsIntent.Builder()
    .build()

customTabsIntent.launchUrl(context, Uri.parse(url))

1
我遇到了完全相同的问题。你可以尝试在主机URI之后定义一个固定路径,这可能会起作用:https://my-host/redirect。 - MalikDe
你正在使用什么版本的依赖项来自定义Chrome标签页? com.android.support:customtabs - João Zão
你找到解决方案了吗? - Rezo Shalikashvili
1个回答

3

因为您的深度链接 URL 类似于网站,Chrome 自定义选项卡将始终尝试将其加载为网页而不是重定向。您可以使用浏览器通常不支持的方案,例如 app-name://,然后您的主机可以是 redirect-to,这样就可以实现以下效果:

 <data
  android:host="redirect-to"
  android:scheme="app-name" />

通过这种方式,只有您的应用程序才能解析此URL。但请注意,当您使用此类型的URL时,它可能不会像电子邮件等一些应用程序中那样显示为链接。


谢谢回复,但这在我的情况下行不通。我目前的做法是:
  1. 在 Chrome 浏览器中从 Webview 打开登录 URL
  2. 登录完成后,我会被重定向回来到我的单个 Webview 主机,该主机由第三方提供商提供带有身份验证令牌的重定向 - 该重定向始终重定向到“https://my-host/auth-token”,如果我更改了 https 方案,则永远不会在我的本机应用程序中打开。
这可以正常工作,但当我将 Chrome 浏览器替换为自定义选项卡时就无法工作。
- user1552050
1
这是一个很好的提示,我之前一直在苦苦挣扎。我将我的方案更改为应用程序ID(com.company.appname)。我还在Keycloak中更新了重定向URL。然后它就起作用了。 - Developine
我把我的从https改成了其他东西,然后它就可以工作了。 - Kurt Capatan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接