android - 从深层链接中排除少数网址

标签 android deep-linking

我可以在我的 list 的 intent-filter 中使用以下过滤器成功实现应用程序的深度链接:

   <data  android:host="myhost.com"
    android:pathPrefix="/v"
    android:scheme="http" />

例如。我的网址是:

 http://myhost.com/v/login1.php?id=123&name=abc&type=a
 http://myhost.com/v/login1.php?id=123&name=abc&type=b

我要排除

http://myhost.com/v/login1.php?id=123&name=abc&type=c

现在我想排除一些具有相同前缀的 Url。是否有可能或者我是否需要使用 android:path 明确指定所有网址?如果是,如何处理查询参数的值?

最佳答案

很遗憾,我们不能排除任何特定的 url,因为 Android 不提供该选项。

最佳做法是提供尽可能精确的路径前缀

只指定主机而不指定任何路径前缀是可以的,只要应用程序执行的所有操作都有意义。但是如果有任何链接应该做一些特定的事情而应用程序无法处理,那么它应该让网络服务正确处理它。在这种情况下,如果您的 Web 服务比您的应用程序能做的更多,那么将所有内容列入白名单并不是一个好主意。

有些人喜欢只匹配 list 中的主机,然后在代码中处理不同的情况。如果通过“其他”条件处理它真的有意义,您永远不知道可以捕获什么意外的 url。最好小心做,只列出我们确定的 pathPrefix。

回到你的案例,大多数时候,我相信应用程序能够处理 url,如果它只是查询参数不同的话。因为它属于同一个 Action (通过 API 的路由处理程序),只是结果不同。只有当整个路由不同的时候,才应该区别对待,给正确的pathPrefix。

所以有效的例子可能是:

// To handle:
http://myhost.com/v/login1?id=123&name=abc&type=a
// To exclude:
http://myhost.com/v/login2?id=123&name=abc&type=a

然后在AndroidManifest.xml中:

<data android:scheme="http"
      android:host="myhost.com"
      android:pathPrefix="/v/login1" />

注意: 万一您偶然发现 noindex.xml ,这是针对 App Indexing,而不是深度链接排除。

关于android - 从深层链接中排除少数网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27184578/

相关文章:

facebook - 为 Messenger Bots(又名深度链接)创建自定义入口点(链接)

android - Flutter Navigator 2.0 - 从 URL 启动应用程序时路由器没有收到深层链接?

android - 获取错误 "You haven' t 设置分支链接 propoerly"当尝试从分支指标打开链接时?

java - 如何在apk中插入新文件?

android - Root Android - 在 root 拥有的目录中创建和读取文件

android - 如何将数据从 android 存储到 amazon s3

android - 为什么安卓:uiOptions ="splitActionBarWhenNarrow" not working with device

Android:在安装时处理 App Link Verification 失败

ios - 两个应用共享相同的通用链接

java - bigdecimal 除以整数