10

我正在使用 iOS 的新通用链接功能,但想禁用我主页的某些路径以使用该功能。

例如:应该在我的应用程序中打开所有包含“_id_”和起始页面的 URL,但不包括来自域 http://example.com 的http://example.com/testsite 我该如何解决这个问题?

我在服务器上的 apple-app-site-association 文件如下所示:

{
"activitycontinuation": {
    "apps": [
        "ABCDEFGHIJ.com.example.ios"
    ]
},
"applinks": {
    "apps": [],
    "details": [
        {
            "appID": "ABCDEFGHIJ.com.example.ios",
            "paths": [
                "/",
                "*_id_*"
            ]
        }
    ]
}
}

我在应用程序中的权利文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.associated-domains</key>
    <array>
        <string>activitycontinuation:example.com</string>
        <string>activitycontinuation:www.example.com</string>
        <string>activitycontinuation:m.example.com</string>
        <string>applinks:example.com</string>
        <string>applinks:www.example.com</string>
        <string>applinks:m.example.com</string>
    </array>
</dict>
</plist>

我没有找到任何排除某些路径的选项。这怎么可能?

4

2 回答 2

10

在路径前面加上NOT以排除该路径被匹配。例子 -

{
"applinks": {
    "apps": [ ],
    "details": [
        {
            "appID": "{app_prefix}.{app_identifier}",
            "paths": [ "NOT /path/to/exclude"]
        }
    ]
}
}

定义路径有3种方式:

Static: 整个受支持的路径被硬编码以识别特定链接,例如 /static/terms
Wildcards: * 可用于匹配动态路径,例如 /books/* 可以匹配任何作者页面的路径。? 在特定路径组件内,例如书籍/1?可用于匹配 ID 以 1 开头的任何书籍。
Exclusions:在路径前添加 NOT 会排除匹配该路径。

数组中提及路径的顺序很重要。较早的指数具有更高的优先级。一旦路径匹配,评估就会停止,其他路径将被忽略。每个路径都区分大小写。


参考

如何在 iOS App 中支持 Universal Links 并为其设置服务器?

于 2016-03-07T19:00:38.833 回答
2

这行得通吗?

"paths": [
    "NOT http://example.com/testsite/*",
    "/",
    "*_id_*"
]

阅读苹果指南,它应该有助于排除该特定路径。

要指定不应作为通用链接处理的区域,请在路径字符串的开头添加“NOT”(包括 T 后的空格)。

于 2015-12-16T18:03:20.453 回答