虽然官方说传统的方案操作繁琐,推荐使用uniCloud自动生成。但是我不怎么用uniCloud,一通操作下来,反而觉得自动生成的步骤比较杂乱。并且我的项目大部分还是用的传统云服务器,因此我认为传统方案更适合我,但是网上找的一些教程,根据步骤走还是有坑,我踩坑之后实现了一套可行的方案,记录下来。
一 . 适用情况
已有https证书,使用nginx代理域名的服务器,一般开发项目的时候,都会用来承载后台管理系统或者官网之类的网页,这种情况实在没必要再开通uniCloud。
二.配置步骤
1. 苹果开发者中心
获取苹果开发者中心上记录的appid和bundleid
并且在创建应用的时候勾选Associated Domains(实际上一般情况下不打算配置universal-links的也会勾选这个,只要确保有勾选就好了,但是如果之前没有勾选,那么补充勾选之后,要重新生成描述文件)
2. 服务器
nginx.conf上新增一条记录,确保访问 https://www.abc.com/apple-app-site-association/ 返回正确的json字符串
这里注意,很多教程说要加 ulink,但是后续步骤好像跟ulink没关系了,并且我按照教程走总是失败,因此我用的是另一套方法,直接在nginx配置上返回数据,不用在根目录上放txt文件。
server{
server_name www.abc.com;
location /apple-app-site-association {
add_header Content-Type text/plain;
charset UTF-8;
return 200 '{"applinks":{
"apps":[],
"details":[{"appID":"appid.bundleid","paths":["*"]}]
}}';
}
}
appid.bundleid 用之前获取的数据代替,
这时候就生成了我们要的UniversalLinks:https://www.abc.com/apple-app-site-association/,用浏览器访问看是否会返回正确的字符串。
3. HbuilderX
manifest.json-->app其他设置-->IOS设置-->关联域中填写域名
例如主域名是 www.abc.com,那就填写 applinks:www.abc.com
如果有加分享或者支付,那么点击在对应的地方填写定好的url就行了,例如:
manifest.json-->app模块配置-->分享-->微信分享-->ios平台通用链接,填写https://www.abc.com/apple-app-site-association/