如何在服务器上为iOS应用程序上传文件apple-app-site-association以进行通用链接?
在服务器上上传apple-app-site-association文件的步骤是什么。 stg1.example.com是需要进行通用链接并且文件应该在其根路径上传的网站。如何在iOS中上传服务以进行通用链接。 如何在服务器上传json格式的文件?
apple-app-site-association
文件需要通过HTTPS
访问,无需任何重定向, url为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": [ "*" ] } ] } }
示例中的演示文件
{ "applinks": { "apps": [], "details": [ { "appID": "M8HBL5W4VV.com.Universal-Links", "paths": [ "/iOS-Universal-Links/*"] } ] } }
注意 – 不要将.json
附加到apple-app-site-association
文件名。
关键如下:
apps
:应该有一个空数组作为其值,并且必须存在。 这就是Apple想要它的方式。
details
:是一个字典数组,一个用于网站支持的每个iOS应用程序。 每个字典都包含有关应用程序,团队和软件包ID的信息。
有三种方法可以定义路径:
Static
:整个支持的路径都是硬编码的,用于标识特定链接,例如/ static / terms
Wildcards
:A *可用于匹配动态路径,例如/ books / *可以匹配任何作者页面的路径。 ? 在特定的路径组件内部,例如books / 1? 可用于匹配ID以1开头的任何书籍。
Exclusions
:使用NOT前置路径会排除该路径不匹配。
数组中提到路径的顺序很重要。 早期指数具有更高的优先级。 路径匹配后,评估将停止,其他路径将被忽略。 每个路径都区分大小写。
支持多个域
应用程序支持的每个域都需要提供自己的apple-app-site-association文件。 如果每个域提供的内容不同,则文件的内容也将更改为支持相应的路径。 否则,可以使用相同的文件,但需要在每个支持的域中访问它。
使用Apple App搜索validation工具validation您的服务器
测试您的网页以获取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 .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
of application/json
。 否则,它应该是application/pkcs7-mime
。
在这里查看我的完整详细答案
如何支持iOS App和设置服务器中的Universal Links?