什么是通用链接?
通用链接是一种能够方便的通过传统 HTTP 链接来启动 APP, 使用相同的网址打开网站和 APP。
通过唯一的网址, 就可以链接一个特定的视图到你的 APP 里面, 不需要特别的 schema 。试想一下 Twitter 使用了通用链接, 那么你每在 twitter.com 点击一个链接, 你的 iOS 设备都会在 Twitter 里面自动打开这个页面, 而不是当你没有安装时转到普通的网页。这个用户体验是顺畅的, 最重要的是用户不会失去上下文(跳到 APP 后 Safari 上不再留下空标签)。
怎么使用通用链接?
1.首先要有一套支持通用链接的证书,因此在appID的生成中勾选Associated Domains功能:
2.在你创建的工程中target-》capablities中打开Associated Domains服务。
3.创建一个json 格式的apple-app-site-associatio 文件:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "HQK4UH6GG4.com.wwdc.cctvwwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
}
]
}
}
tips:
1)paths是域名下可支持跳转的链接路径(paths是区分大小写的)eg:https://domain.com/wwdc/news/ 可以进入app,https://domain.com/wwdc/olds/不可以
2)appID组成部分:TeamID + BundleId; TeamID可以从苹果开发账号页面的 Account-》Membership-》Team ID
4.上传 apple-app-site-association 文件
首先,上传到web server主目录下 PS:自16年下半年后,apple修改了策略,从原来的/apple-app-site-association到现在的/.well-known/apple-app-site-association
其次,web server 的主目录需要支持https
5.在工程中做配置支持和代码支持
配置支持:在第2步中的Associated Domains里 添加你的 APP 域名, 必须用 applinks: 前置。还可以添加一些你可能拥有的子域和扩展(www.domain.com, news.domain.com 等等)。
这将使你的 APP 从你的域名请求一个特殊的 JSON 文件 apple-app-site-association。当你第一次启动 APP,它会从https://domain.com/apple-app-site-association下载这个文件。
代码支持:在 AppDelegate 里实现 application(_:continueUserActivity:restorationHandler:)。
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
//
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
//
NSURL *webUrl = userActivity.webpageURL;
NSLog(@"universal link URLString=%@",webUrl.absoluteString);
[[UIApplication sharedApplication] openURL:webUrl];
}
return YES;
}
当应用启动并且验证为NSUserActivityTypeBrowsingWeb时,此时可以使应用打开一个非空的URL地址,同样的你也可以做些其他的事情。