ios9 通用链接:一种能够方便的通过传统 HTTP 链接来启动 APP, 使用相同的网址打开网站和 APP。
通用链接的作用在于,当你访问一个网页地址的时候,如果没有安装app,正常跳转到网页,如果有安装某个配置了该域名的app,则唤醒到app中显示,以此达到更好的体验。
在使用通用链接前,咱们需要一个额外的准备,就是一个支持https访问的域名。
ok,现在准备开始了。
一.首先在上述准备的网址根目录上传一个json文件,文件名为apple-app-site-association(不带后缀),即使用一下地址可以访问到该文件(其中xxxx表示你的域名,注意是域名不是ip地址)。
然后说一下文件内的json内容
{
"applinks": {
"apps": [],
"details": {
"Team ID.Bundle ID": {
"paths":[ "*" ]
}
}
}
}
其中Team ID在https://developer.apple.com中查看,Bundle ID就是应用的Bundle ID。paths键则是设定允许的路径列表且路径区别大小写, 或如果你只想打开APP而不管路径则写一个星号就可以。
二.设置APP的Associated Domains
首先需要在https://developer.apple.com/中的APP IDs里启用Associated Domains。修改了APP ID后记得要更新配置文件。
接着在工程中Target-Capabilities中也启用Associated Domains,然后添加支持跳转的URL,一般写你的域名applinks:xxxx或者其他的子域名。
三.重新打包运行之后,尝试在手机的备忘录中输入https://xxxx。然后点击链接看能否跳转到你的应用。
最后,我们看下在AppDelegate通用链接唤起app时的回调
-(BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler
{
if([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb])
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"从通用链接打开" message:userActivity.webpageURL.absoluteString
delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[alert show];
}
return YES;
}