1:准备好一个文件名字叫做:apple-app-site-association
不要加后缀名,里面放的是标准的json。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}
"9JA89QQLNQ.com.apple.wwdc"
9JA89QQLNQ: 这个玩意是teamID,可以在开发者中心的appid详情中看到;
com.apple.wwdc:这个玩意是bundle id;
paths: 用来指定打开不同的APP或APP不同的页面。APP中能接收到这个参数,我们可以拿来判断要跳转到哪个页面。
比如上面的例子,"域名/wwdc/news/", 这个链接就能吊起9JA89QQLNQ下边的‘com.apple.wwdc’ 这个bundleId对应的APP。
如果直接点击"域名"这个链接,只能吊起ABCD1234下边的”com.apple.wwdc“这个APP。
但是一般我们自己的做法是,teamID是一样的,然后账号下不同的APP的bundle id是不同的,所以可以用path来配置打开我们不同的APP。
2:找后端小伙把文件放入到一个域名下的根目录,必须支持HTTPS协议,让我们请求 "域名/apple-app-site-association"能请求到。因为没指定请求头的类型,所以请求下来的是个文件。
其实还可以在根目录创建一个well-known的目录,然后放里边,但是我这边试的不行,可能是我姿势不对吧。
还有一个注意点是,好像不能用四级域名,我这边测试的是不行。
3:需要使用UniversalLink的APPID需要打开通用链接功能。注意打开后pp文件(配置文件)会失效,需要重建pp文件。
![](https://img.haomeiwen.com/i9041905/8617092a5934ba74.png)
4:工程中添加Associated Domains。把那个放文件的域名放进去,格式是:
applinks:+域名,例如applinks:www.jianshu.com
注意,域名前不需要加https://,后边也不需要加/
![](https://img.haomeiwen.com/i9041905/189bd19cecf1572a.png)
在APPdelegate中添加方法:
#pragma mark Universal Link
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
// TODO 根据需求进行处理
}
// TODO 根据需求进行处理
return YES;
}
5:测试。一般只会在APP下载完后初次启动才会下载这个文件,所以如果修改了apple-app-site-association文件,请删除APP后重新下载。
在备忘录中,输入那个域名,拼上你设置的path,如果path是*,代表的域名本身链接即可吊起。如果点击连接能直接跳转到我们的APP,说明配置成功!
网友评论