在服务器中上传apple-app-site-association文件的程序是什么?stg1.example.com 是需要进行通用链接的网站,文件应该上传到它的根路径。如何在iOS中使服务上传以进行通用链接。如何在服务器上传json格式的文件?
1 回答
该apple-app-site-association
文件需要通过https://stg1.example.com/apple-app-site-associationHTTPS
访问,无需任何重定向。
该文件如下所示:
{
"applinks": {
"apps": [ ],
"details": [
{
"appID": "{app_prefix}.{app_identifier}",
"paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
},
{
"appID": "TeamID.BundleID2",
"paths": [ "*" ]
}
]
}
}
示例中的演示文件
{
"applinks": {
"apps": [],
"details": [
{
"appID": "M8HBL5W4VV.com.Universal-Links",
"paths": [ "/iOS-Universal-Links/*"]
}
]
}
}
注意-不要附加.json
到apple-app-site-association
文件名。
键如下:
apps
: 应该有一个空数组作为它的值,并且它必须存在。这就是苹果想要的。
details
: 是一个字典数组,用于网站支持的每个 iOS 应用程序。每个字典都包含有关应用程序、团队和捆绑包 ID 的信息。
定义路径有 3 种方式:
Static
: 整个支持的路径被硬编码以识别特定链接,例如 /static/terms
Wildcards
: * 可用于匹配动态路径,例如 /books/* 可以匹配任何作者页面的路径. ? 在特定路径组件内,例如书籍/1?可用于匹配 ID 以 1 开头的任何书籍。
Exclusions
:在路径前添加 NOT 会排除匹配该路径。
数组中提及路径的顺序很重要。较早的指数具有更高的优先级。一旦路径匹配,评估就会停止,其他路径将被忽略。每个路径都区分大小写。
支持多个域
应用程序支持的每个域都需要提供其自己的 apple-app-site-association 文件。如果每个域服务的内容不同,那么文件的内容也会改变以支持各自的路径。否则,可以使用相同的文件,但需要在每个支持的域都可以访问它。
使用 Apple App 搜索验证工具验证您的服务器
针对 iOS 9 搜索 API 测试您的网页。输入 URL,Applebot 将抓取您的网页并显示如何优化以获得最佳结果
https://search.developer.apple.com/appsearch-validation-tool/
网站代码
网站代码可以在 https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages上找到 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.key
和是您example.com.pem
的intermediate.pem
认证机构将提供给您的文件。
注意:如果文件没有签名,它应该有一个Content-Type
. application/json
否则,应该是application/pkcs7-mime
。