如何在服务器上为iOS应用程序上传文件apple-app-site-association以进行通用链接?

时间:2016-01-30 14:07:29

标签: ios ios9 ios-universal-links

在服务器中上传 apple-app-site-association 文件的步骤是什么。 stg1.example.com是需要完成通用链接的网站,文件应该在其根路径中上传。如何在iOS中上传服务以进行通用链接。如何在服务器中上传 json 格式的文件?

1 个答案:

答案 0 :(得分:27)

https://stg1.example.com/apple-app-site-association 需要通过apple-app-site-association访问HTTPS文件,无需任何重定向。

该文件如下所示:

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

example

中的演示文件
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "M8HBL5W4VV.com.Universal-Links",
                "paths": [ "/iOS-Universal-Links/*"]
            }
        ]
    }
}

注意 - 请勿将.json附加到apple-app-site-association文件名。

密钥如下:
apps:应该有一个空数组作为其值,并且它必须存在。这就是Apple想要它的方式 details:是一个字典数组,一个用于网站支持的每个iOS应用程序。每个字典都包含有关应用程序,团队和软件包ID的信息。

有三种方法可以定义路径:
Static:整个支持的路径都经过硬编码,以识别特定的链接,例如: /静态/项
Wildcards:A *可用于匹配动态路径,例如/ books / *可以匹配任何作者页面的路径。 ?特定路径组件内部,例如,书籍/ 1?可用于匹配ID以1开头的任何书籍 Exclusions:在NOT前面添加路径会排除该路径的匹配。

数组中提到路径的顺序很重要。早期指数具有更高的优先级。路径匹配后,评估将停止,其他路径将被忽略。每条路径都区分大小写。

支持多个域

应用程序支持的每个域都需要提供自己的apple-app-site-association文件。如果每个域提供的内容不同,则文件的内容也将更改以支持相应的路径。否则,可以使用相同的文件,但需要在每个支持的域中访问它。

使用Apple App搜索验证工具验证您的服务器
测试您的网页是否有iOS 9搜索API。输入网址,Applebot会抓取您的网页,并展示如何优化以获得最佳效果 https://search.developer.apple.com/appsearch-validation-tool/

网站代码

网站代码可以在gh-pages分支上找到 https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages

签署App-Site-Association文件(不适用于HTTPS服务器)

注意如果您的服务器使用HTTPS来提供内容并跳转到应用程序设置指南,则可以跳过此部分。

如果您的应用定位到iOS 9且您的服务器使用HTTPS来投放内容,则无需对该文件进行签名。如果不是(例如,在iOS 8上支持Handoff时),则必须使用来自认可的证书颁发机构的SSL证书对其进行签名。

注意:这不是Apple提供的将应用程序提交到App Store的证书。它应该由第三方提供,并且建议使用您用于HTTPS服务器的相同证书(尽管不是必需的)。

要对文件进行签名,请先创建并保存简单的.txt版本。接下来,在终端中,运行以下命令:

cat <unsigned_file>.txt | openssl smime -sign -inkey example.com.key -signer example.com.pem -certfile intermediate.pem -noattr -nodetach -outform DER > apple-app-site-association

这将在当前目录中输出签名文件。 example.com.keyexample.com.pemintermediate.pem是您的认证机构可以使用的文件。

注意:如果文件未签名,则其Content-Type应为application/json。否则,它应该是application/pkcs7-mime

在这里查看我的详细答案

How to support Universal Links in iOS App and setup server for it?