使用一个 url 链接就可以打开一个 app,是个多方便的事情。不过,得先安装该 app 啊。不过,肯定是蛮好的。
相关链接
操作一波
- 创建 app id 的时候,要将 Associated Domains 打钩。
- 服务器端准备 apple-app-site-association 文件。该文件就是文件名,不需要任何后缀,内容如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "VQYDABC49G.pro.xiangrong.xiaoqubao",
"paths": [ "/ulink/*"]
}
]
}
}
apps 就是空的,appID 的 VQYDABC49G 去开发账号中 Certificates, Identifiers & Profiles 的 Identifiers 中查看,就是 App ID Prefix。后半的 pro.xiangrong.xiaoqubao 就是 Bundle ID。
paths 自己定义。用于处理可以跳转到App的链接,支持通配符*,?以及NOT进行匹配,匹配的优先级是从左至右依次降低。 apple-app-site-association 放在根目录,paths 加个路劲方便和其他路径区分开来。如果该域名也有其他业务的话。
上边的内容你要修改的好好的。然后放在域名映射的根目录的 .well-known 文件夹下。然后通过 xxxx/.well-known/apple-app-site-association 能够访问到就可以。
当然,如果使用 nginx,可以直接在 nginx 的 .conf 中配置 location 也可以。
- 上边都配置好了。然后,在 app 程序端配置打包就好。这里是 uniapp 的搞法。打开配置文件 mainfest.json ,找到 App 常用其他设置,然后在关联域这里添加新项即可。比如添加 applinks:zeipan.com, 通过源码视图就可以看的到的。如:
"capabilities" : {
"entitlements" : {
"com.apple.developer.associated-domains" : [ "applinks:zeipan.com" ]
}
},
- 打包。如果是 uniapp,先打包基座。删除手机上的已有 app(如果之前打包过)。然后运行,运行到 App Ios 基座。
-
测试。上边的部分都准备好了,打开备忘录,输入link 地址。 比如: https://zeipan.com/ulink/?title=test。 保存,点击链接。如果上边都配置对了,这个时候就可以打开刚才安装的 app。
-
接受参数。 通过 https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.arguments 获取参数。有了参数,你就可以做想做的事情,比如跳转到某个页面,传递某个参数等等。
这里以接受参数,然后跳转到某个页面为例:
let params = null;
if(plus.runtime.arguments != ""){
try{
params = JSON.parse(plus.runtime.arguments);
}catch(e){
let arr = plus.runtime.arguments.split('?');
params = {};
if (arr.length == 2) {
arr = arr[1].split('&');
for(let str of arr) {
let p = str.split('=');
if (p.length == 2) {
params[p[0]] = decodeURIComponent(p[1]);
}
}
}
}
let tabbars = ['views/home/index', 'views/message/index', 'pages/mine/index'];
if (params.page) {
let isTab = false;
for(let tabbar of tabbars) {
if (params.page.indexOf(tabbar) >= 0) {
isTab = true;
break;
}
}
if (isTab) {
uni.switchTab({
url: params.page
});
} else {
uni.navigateTo({
url: params.page
});
}
}
}
注意对传递的 url 进行 encodeURIComponent 和 decodeURIComponent。