iOS universallinks唤醒app

从iOS9之后,苹果就推出了这个功能,用来唤醒外部app。这个功能在那些电商app上使用尤其广泛,当你打开对应的h5网页后,上面跳出一个是否跳转app的按钮。

现在iOS11已经基本覆盖,iOS12也马上就要发布了,这算是一个很成熟的服务了,所以对接一下,也十分必要。

在这个功能推出之前,iOS这边基本都用url scheme做app间的通信,这个功能在企鹅系应用中直接被屏蔽,在其他应用中使用的也不少。但是,这个会产生很多问题,应为url scheme不唯一,用户可以随便自定义这个url scheme。之前单位做应用的时候变碰到过这个问题,装了另外一个app之后,用urlscheme唤醒我的app的时候,唤醒了别的app,这个便是由于url scheme冲突造成的问题。unviersal links 由于域名的唯一性,便不会产生这个问题。

下面我们来说一下具体对接过程

1.在xcode中开启Associated Domians服务

路径:Target->Capbilities->Associated Domians

之前看有人说,需要先在开发者账号中开启这个服务,实际上你只要在工程中打开这个服务,然后build一下,开发者那边自动会开启这个服务。

image

在domains里面添加你需要的链接。

a.必须以applinks作为开头

b.该链接的服务器必须支持ssl

2.填写apple-app-site-association文件

这是一个json格式的文件,但是文件名不能有后缀

image

在这个文件里 可以配置多个appID,appID的格式为你该工程所在的team的teamID+你的工程ID-->>T1212JGF.com.xxx.xxx

具体的可以在开发者账号的Account -> Membership -> Team ID 查看

paths里面可以配置所有你需要响应的链接。

比如你在applinks里配置了www.baidu.com,你现在需要打开www.baidu.com就能唤醒app,那你可以直接写''/*".

你需要在某几个特定的链接下唤醒app,那就在paths里面填写你那特定的链接。paths里面可以填写多个链接

3. 把apple-app-site-association文件传到applinks的根目录下。

比如你applinks为www.baidu.com。那就将后台把这个文件传到这个目录下。当你访问www.baidu.com/apple-app-site-association这个链接的时候,能成功的下载这个文件,那就说明成功了。

4.工程中配置

在工程APPdelegate中添加对于该服务的响应代码,这里可以对该链接是否跳转进行控制。

复制代码

- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler{ if([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]){
NSURL *url = userActivity.webpageURL;
} return YES;
}

复制代码

5. 测试

在safari中打开对应的链接

image

当你打开链接,然后下拉,出现该多出的页面,那么恭喜你,你成功了。点击打开按钮,你就能跳转到你需要的页面了。

原作者:https://www.cnblogs.com/muzhou/p/9223690.html

你可能感兴趣的:(iOS universallinks唤醒app)