【发布时间】:2016-05-08 06:20:07
【问题描述】:
apple-app-site-association文件上传到服务器的流程是什么? stg1.example.com 是需要进行通用链接的网站,文件应该上传到它的根路径。如何在iOS中使服务上传以进行通用链接。如何在服务器上传json格式的文件?
【问题讨论】:
标签: ios ios9 ios-universal-links
apple-app-site-association文件上传到服务器的流程是什么? stg1.example.com 是需要进行通用链接的网站,文件应该上传到它的根路径。如何在iOS中使服务上传以进行通用链接。如何在服务器上传json格式的文件?
【问题讨论】:
标签: ios ios9 ios-universal-links
apple-app-site-association 文件需要通过HTTPS 访问,无需任何重定向,位于 https://stg1.example.com/apple-app-site-association。
文件如下所示:
{
"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 的信息。
定义路径有 3 种方法:Static:整个支持的路径都经过硬编码以识别特定链接,例如/static/termsWildcards: A * 可用于匹配动态路径,例如/books/* 可以匹配任何作者页面的路径。 ?在特定路径组件内,例如书籍/1?可用于匹配 ID 以 1 开头的任何书籍。Exclusions:在路径前添加 NOT 会排除匹配该路径。
在数组中提及路径的顺序很重要。较早的指数具有更高的优先级。一旦路径匹配,评估将停止,其他路径将被忽略。每个路径都区分大小写。
应用支持的每个域都需要提供其自己的 apple-app-site-association 文件。如果每个域服务的内容不同,那么文件的内容也会改变以支持各自的路径。否则,可以使用相同的文件,但需要在每个受支持的域都可以访问它。
使用 Apple 应用搜索验证工具验证您的服务器
针对 iOS 9 搜索 API 测试您的网页。输入 URL,Applebot 将抓取您的网页并展示如何优化以获得最佳结果
https://search.developer.apple.com/appsearch-validation-tool/
网站代码可以在 gh-pages 分支上找到 https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages
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。
How to support Universal Links in iOS App and setup server for it?
【讨论】:
application/pkcs7-mime。 gist.github.com/anhar/6d50c023f442fb2437e1
apple-app-site-association。并且apple-app-site-association 文件需要通过HTTPS 访问,无需任何重定向,https://stg1.example.com/apple-app-site-association。
apple-app-site-association) 没有签名,可以吗?