iOS 9 universal link 通用链接实现

169 阅读3分钟

      近期发现微信登录跳转机制升级为了universal link的方式,想到17年做过的一个需求,从微信内打开的网页直接跳转至App指定页面。将曾今写过的一篇文章分享出来。

      在以往的应用中,从微信端打开 App 分享出的链接,能实现跳转至 Appstore中,再从 Appstore 中下载或者打开 App。Universal  link 技术的使用提供了更优质的体验,能直接从微信中的链接跳入到 App的指定页面。

      App从分享至微信到从微信中直接打开指定 App页面整个流程如下, 如果App 未下载,则直接跳转至 Appstore(此步骤不在本文范围讨论)。   

7409054-f5415f09389a54dc.png

实现通用链路,需具备的先决条件: 

  有两个注册的域名 

  通过 SSL 访问域名 

    至少 Xcode7

    至少 iOS9.0 

如果都有了,按照下面三个步骤来实现:

1、添加域名Capabilitie

        首先,  你必须在  Xcode  的  capabilities  里  添加域名(下图蓝色处),  必须用applinks: 前置它,还可以添加一些你可能用到的子域和扩展(www.domain.com,  news.domain.com 等等)。

7409054-848a64c1bb8379cf.jpeg

这将使你的 APP  从你的域名请求一个特殊的  JSON  文件  apple-app-site-association。当你第一次启动 APP,它会从  xxx.xxx.xxxx/apple-appsi…  下载这个文件。

2、上传 apple-app-site-association

      切记该文件所处的域名必须支持 https访问,且不能和分享页面在同一个域名下(实践得出)。你可以打开一个文本编辑器然后写一个这样的简单 JSON 格式:

7409054-e09d5e1ee6a64b15.jpeg

根据  paths  键设定一个允许的路径列表,  App根据不同路径触发的调起可以做不同的处理逻辑。  或只是一个星号如果你想打开 APP 而不管路径是什么。你可能想知道此处appID从何而来,就是:团队开发者账号标识+bundle  id.你可以从你的苹果开发者账号里获取你的团队标识.    最后, 上传这个文件到第 1 步中 App 所注册的域名根目录。如果你打开xxx.xxx.xxx/apple-app-s…    可以看到你的文件,  那么你就可以继续下一步了。

3、在 App 里处理通用链接

分享至微信的分享页跳转至 App按钮点击事件要实现如下参考代码(蓝色部分为步骤1添加的域名):

7409054-6396b98e20bfe7ae.jpeg

为了在  APP 里支持通用链接,  你需要在  AppDelegate 里实现如下参考代码:     

7409054-c857054bab745730.jpeg

webpageURL 即为在微信中的分享页面中触发跳转 App 按钮时的链接,因为App 中使用了通用链接技术,注册了此域名,所以在代理方法中自动获取到。  上述 iOS 代码中检测到了 game字段后发送名为  “jump”的通知,App 其它页面获取这个通知后做相应处理。 

4、记得在苹果开发者官网中检测此 app设置允许使用Associated Domains。