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 - 排除特定子目录的主要内容,如果未能解决你的问题,请参考以下文章

Handling App Links

动态链接(Android App Links)不提示“打开方式”Android 6.0+

如何从更新中排除特定的git子模块?

Android Gradle 插件Gradle 依赖管理 ⑦ ( dependencies 传递依赖设置 | transitive 关闭依赖传递配置 | exclude 排除子依赖配置 )

CakePHP .htaccess mod_rewrite 配置以排除特定文件夹/url

如何通过邮件中的android深层链接打开片段?