Universal Links的介绍及疑难解答

简介

Universal Links(又称App Links)是通过https链接来实现打开app并传递参数的一套机制,与之前的URL Scheme相比,具有更安全、功能更全面、兼容性更好等优势

iOS如何配置Universal Links

  1. 开启项目的associated domains功能。开发者中心 → Certificates, Identifiers & Profiles → Identifiers → 相应App Id的Capabilities → 勾选Associated Domains
  2. 在项目里配置applinks,即本app支持的universal links域名。工程的Target → Signing & Capabilities → Associated Domains → +号 → 输入applinks:www.example.com
  3. 在以上域名的根目录或者.well-known目录下,放置一个名为apple-app-site-association的json文件,该文件里定义了要打开的url的规则
  4. 在AppDelegate中实现相应的回调方法,func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) → Void)→ Bool

Universal Links工作流程和与URL Scheme的对比

Universal Links是一个四方的鉴权流程,包括调用者、我方app、apple、我方服务器,和以前使用的URL Scheme相比,多出了apple和我方服务器的角色,来确保调用的规范和安全。

具体流程为:

  1. 安装或者更新app时,apple会去我们配置的域名下载apple-app-site-association文件。该文件不直接配置在项目里,而是只配置域名然后apple去自行下载,可以确保apple-app-site-association文件不会被客户端伪造。相比使用URL Scheme是可以随便伪造的,为了保证安全,一般都得自己再加一个接口签名
  2. 某个app或者网页尝试打开https链接时,apple检查该URL的域名是否匹配我方app申明的applinks,如果是,再去匹配apple-app-site-association中定义的appID和paths,如果可以匹配会调起app,否则通过safari打开该链接。我们可以为该链接配置H5页面来提示引导用户下载我们的app。相比使用URL Scheme,如果用户没有安装我们的app,我们将无法做任何后续的引导
  3. 在回调方法中,从 userActivity.webpageURL拿到调起我们app URL,通过其path或者parameters来处理后续的业务

Universal Links无法打开app?

检查以下check list

  • apple-app-site-association文件不要带json或者其他任何后缀
  • 去域名根目录或者.well-known看是否能下载到apple-app-site-association
  • apple-app-site-association必须是合法的json
  • apple-app-site-association中的appID要带team id的前缀,paths前面要带/
  • 项目里配置的applinks,只能包括域名,不要在后面加path。如果要支持多个配置,可以使用多个域名或者子域;也可以在apple-app-site-association文件中通过path进行区分
  • h5唤起Universal Links必须要跨域,在app尝试的时候,可以使用"Notes",编辑链接后点击看是否有 Open in “XXX” 的选项
  • 一般情况下,Entitlements File会自动生成并配置好applinks,但是还是应该检查一下文件内容和路径
  • 尝试卸载安装app,苹果在安装app时会去下载apple-app-site-association

官方文档: https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW1

你可能感兴趣的:(Universal Links的介绍及疑难解答)