Android App Links - 排除特定子目录
Posted
技术标签:
【中文标题】Android App Links - 排除特定子目录【英文标题】:Android App Links - exclude specific sub-directory 【发布时间】:2022-01-04 08:07:09 【问题描述】:我正在使用android App Links 将用户直接带到我的应用程序中的特定屏幕。我采用与 Rakuten 相同的方法,这意味着 URL 的 最后一个路径段 (LPs) 是一个有效域,它将用户引导到我的应用程序上的特定品牌屏幕。
https://www.rakuten.com/nike.com (lps = nike.com)
https://www.rakuten.com/adidas.com (lps = addidas.com)
https://www.rakuten.com/samsung.com (lps = samsung.com)
Android 清单代码
<data android:host="www.rakuten.com" android:scheme="https" android:pathPattern=".*..*"/>
pathPattern = ".*..*"
允许 URL 中的任何域在我的应用程序中打开。以下所有链接都会在我的应用中打开 Nike 品牌屏幕。
https://www.rakuten.com/dir1/nike.com
https://www.rakuten.com/dir1/dir2/nike.com
https://www.rakuten.com/dir1/dir2/dir3/nike.com
https://www.rakuten.com/dir1/dir2/dir3/dir4/nike.com
案例处理:
如果任何 URL 包含 /browser/
(表示子目录名称 = browser
),我想在浏览器中打开该 URL,而不是在我的应用程序中。
https://www.rakuten.com/browser/nike.com (should open in browser and not in-app)
有没有可能这样做?
【问题讨论】:
“有没有可能做到这一点?” - 并不真地。这里没有“除 X 之外的一切”语法。 【参考方案1】:尝试使用:
<data android:host="www.rakuten.com/app" android:scheme="https" android:pathPattern=".*..*"/>
您要在应用中打开的所有路线都应位于www.rakuten.com/app 下
您要在浏览器中打开的所有路由都应位于www.rakuten.com/ 下
【讨论】:
【参考方案2】:很遗憾,我们无法排除任何特定的网址,因为 Android 不提供该选项。
最佳做法是提供尽可能精确的pathPrefix。
<data android:scheme="https"
android:host="www.rakuten.com"
android:pathPrefix="/dir1/" />
所以它会打开https://www.rakuten.com/dir1/* 链接
【讨论】:
以上是关于Android App Links - 排除特定子目录的主要内容,如果未能解决你的问题,请参考以下文章
动态链接(Android App Links)不提示“打开方式”Android 6.0+
Android Gradle 插件Gradle 依赖管理 ⑦ ( dependencies 传递依赖设置 | transitive 关闭依赖传递配置 | exclude 排除子依赖配置 )