iOS 通用链接(Universal Link)唤起app的实现方法

准备工作

开发者账号设置支持

进入开发者中心 选择 Certificates, IDs & Profiles

选择对应的AppId, 编辑其属性,让它能支持Associated Domains,编辑完成之后,保存

设置Associated Domains

将该项目对应的证书重新生成一遍,并下载,配置到工程中即可。

配置证书

XCode支持

在项目中的Target-Capabilities中配置域名。

设置XCode

注意事项

  1. Associated Domains 配置必须以applinks: 开头
  2. 将Associated Domains 的开关打开

文件支持

配置apple-app-site-association文件

注意事项

  1. 必须生成名字为 apple-app-site-association 的文件,没有后缀没有后缀没有后缀
  2. apple-app-site-association文件的格式为图片内容中的格式,只可以修改details 数组中的内容,其他不能修改
  3. appID: Prefix.ID
  4. 设置路径: 假设我们的链接为 y01c.cn,我们在这里设置为 /g/*, 则只有以 y01c.cn/g/为前缀的Universal Link才可以打开我们的app。 若我们设置为 / ,则以 y01c.cn/ 为前缀的Universal Link都可以打开我们的app

服务器支持,建立app与链接的关系

步骤

  1. 将 apple-app-site-association 文件上传到服务器中该域名的根目录下,言下之意就是我们可以用GET请求可以获取到 https://www.example.com/apple-app-association
  2. 再次强调 必须是 HTTPS协议
  3. 关联原理:当我们的App在设备上第一次运行时,如果支持Associated Domains功能,那么iOS会自动去GET定义的Domain下的 apple-app-site-association 文件。需要留意iOS会先请求https://domain.com/.well-known/apple-app-site-association如果此文件请求不到,再去请求https://domain.com/apple-app-site-association所以如果想要避免服务器接收过多GET请求,可以直接把 apple-app-site-association 放在 .well-known 目录下

注意事项

  1. 注意:首先你的服务器必须得支持SSL
  2. 服务器上 apple-app-site-association 的更新不会让iOS本地的 apple-app-site-association 同步更新,即iOS只会在App第一次启动时请求一次,以后除非App更新或重新安装否则不会在每次打开时请求 apple-app-site-association

开发

待我们服务器部署好了,用curl测试一下 apple-app-site-association 能够正确GET到了,那么我们就需要在工程中响应跳转事件了。

我们在AppDelegate中实现如下代理方法:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {}


测试

现在一切都已经完成了,现在我们可以在 短信/备忘录 中点击一个URL直接跳转到我们的App。至于如何检验URL是否能够跳转,一个快捷方便的方法就是在系统原生App中(如短信、邮件等)长按URL,如果弹出的选项中有在“your app”中打开,那么证明该URL是支持跳转的.

注意

非系统原生App不一定能支持直接点击URL跳转,例如在微信中点击URL会首先在微信内的WebView打开,如果要跳转只能再通过Safari打开。

没有更多推荐了,返回首页