Deep link 无法在 Chrome 自定义选项卡中使用具有旧版本 Chrome 的设备

Deep link not working from Chrome Custom Tabs with device having old version of Chrome

我从我的应用启动了 ChromeCustomTabs。 chorme 自定义选项卡中的页面显示一个按钮。单击该按钮会触发深度 link,例如 myapp://show/screen?id=123。我对应的 intent-filter 是这样的:

            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>

                <data android:scheme="myapp"/>
                <data android:host="show"
                    android:path="/screen"/>
            </intent-filter>

问题:当用户点击该按钮时,仅当 chrome 的版本是最新版本或最新版本 74. 时,它才会启动我的应用程序。 而它不会在旧版本的 chrome 浏览器上触发我的应用程序,例如在 65..

事实证明这是一个众所周知的问题。当我在浏览器中连接我的模拟器开发工具时,我收到一条 Navigation is Blocked 控制台消息。 Google Chrome 不会让深层链接打开应用程序,如果它是由 javascript 触发的。它必须是用户启动的操作。在我的例子中,在用户点击按钮后,在深度链接被触发之前,ajax 调用后面做了一系列事情。

作为一种变通方法,单击该按钮并且网络完成所有 ajax 调用后,它会重定向到 new 中间屏幕。这个屏幕是用一个按钮创建的,供用户单击(继续)。单击此按钮后,深层链接成功重定向到应用程序。