URL Scheme和Universal link

URL Scheme

URL Scheme是苹果为方便app之间互相调用而设计的

URL Scheme的设置

设置一个URL Scheme,唯一标识一个app,其他APP能够通过URL scheme拼成类似于URL链接的形式唤起该app,并且拼接的URL链接能够携带一些参数,从而使不同APP之间能够通信或者分享一些数据


URL Scheme和Universal link_第1张图片
屏幕快照 2020-04-28 下午7.43.55.png

如果两个APP都设置了同一个URL scheme,会造成冲突,有一个APP无法被打开;后安装的APP会被打开,也就是最后将URL scheme写入系统中的APP会优先被唤起;

唤起APP
NSURL *url = [NSURL URLWithString:@"efgad24yxl://share?key=param"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) {
            //iOS 10.0+
      [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
            }];
    }else{
            //iOS 2~10
      [[UIApplication sharedApplication] openURL:url];
    }
 } else {
        //一般是没有安装
     NSLog(@"跳转下载app链接");
 }

Universal Link

通用链接是通过传统的HTTP链接能够打开APP的技术
通过一个唯一的网址,就可以连接到APP的某一个视图;如果用户没有安装对应的APP则跳转到普通的网页
在webview或者Safari打开一个universal link,如果APP里associated domain里关联了该link,则会跳转至该APP

Universal Link的基本运作流程

1.APP第一次启动或APP更新版本后第一次启动
2.APP向工程里配置的域名发起Get请求拉取配置好存放在https服务器上的apple-app-association文件
3.APP将apple-app-association注册给系统
4.由任意webview发起跳转的url,如果命中了apple-app-association注册过的通用链接
5.打开App,触发Universal Link delegate
6.没命中,webview继续跳转url

universal link具有唯一性,只能打开一个app;因为注册关联域名的时候apple-app-association文件里有配置bundle identifier,必须和APP的包名一致才能work

你可能感兴趣的:(URL Scheme和Universal link)