如何在iOS9系统中使用Universal Link

概述

在ios9系统中,可以通过类似打开网页的方式,通过http协议打开app。通过一个唯一的网址,可以指到app内部的一个特定的view。而不用再使用scheme。设想一下,如果twitter使用了Universal Link,如果你点击了一个twitter的链接。你的设备直接打开twitter app内相应的页面。而不是打开一个普通的网页,然后再通过这个网页打开twitter,这种体验将是非常平滑,且对用户来讲,也节省了很多不必要的操作。

功能

使用Universal Link 能让你的App做到,通过点击一个网址,打开你的app,并跳转到对应的页面。

准备工作

实现Universal link 并不难,但是你必须遵从一些条件。下面是需要准备的清单。

序号 条件 例如
1 注册域名 www.domian.com
2 可以SSL访问你的域名 https://
3 能够上传一个Json文件到你的域名 file
4 IOS 9 ios 9
5 至少要Xcode 7 xcode 7

如果你已经具备了上面所有的先决条件,那么接下来只需要3步就可以在IOS9上的设备实现Universal link。

具体步骤

  1. 添加域名到Capabilities

    1. 首先需要在xcode的capability下面添加域名,且必须得是applinks:的前缀,如果有二级域名,也一并加入进去,诸如(www.domain.com,news.domain.com,etc)

      image.png

      这将会使你的app访问一个特殊的json文件"apple-app-site-association",当你首次运行app的时候,它就会从https://domain.com/apple-app-site-association 下载这个json文件。接下来,看步骤2来学习下怎么构造这个文件。

      此外,还需要在网站上配置app的授权,允许universal link。编辑Associate Domain的授权为enable

  2. 上传apple-app-site-assosiation 文件

    1. 这个文件必须存在,且能通过SSL的方式,通过get请求获取到。你可以打开一个文本编辑器,然后写下如下的json格式

      {
       "applinks": {
       "apps": [],
       "details": [
       {
       "appID": "TBEJCS6FFP.com.domain.App",
       "paths":[ "*" ]
       }
       ]
       }
      }
      

      在这个path 字段下,你可以有一个列表,这个列表是app允许反射到的url地址,或者也可以是一个*号,来标示你只是想打开一个app,而不管它的具体地址。

    2. 另外,你可能会好奇TBEJCS6FFP.com.domain.App 这个值是从哪获取的,通常来讲,它就是你app的bundleid所在的teamed。你也可以点击来查询你的teamid,然后bundleid可以在app的General下查询到。

      image.png

    3. 最后,如果你可以在你的根域名下,找到 https://domain.com/apple-app-site-association,那么你就可以开始下一步了。

  3. 在你的app内部如何处理universallink

    为了在app内部支持universal link,你需要在appdelegate中实现以下方法,application(_:continueUserActivity:restorationHandler:) ,尽管这个方法可能会处理多个事件(如 Handoff,SearchApi),但是我们只关注来自universal link的事件。

    如果userActivity给的参数是NSUserActivityTypeBrowsingWeb.这就意味着它是来自universal link的参数,在这个情况下,首先保证它的webpageURL不为空,这个属性指的就是用户打开的链接。那么它有可能为如下的格式http://domain.com/path/to/thezoo

    为了确保你的app能够转换这些URL,你需要做以下几步

    • 通过NSURLComponents类解析webpageURL host以及path路径。

    • 确保你能够识别这个host

    • 尽量把path的路径对应到你的app页面中

    • 确保path对应的页面能够展示

    • 展示对应的页面给用户

      如果上面的步骤失败了,苹果建议你的app,优雅的打开safari对应的网址。

其他

当无法往根域名下放置apple-app-site-association文件的时候,可以考虑在二级域名下放置,同时将二级域名重定向到根域名。通过这种方式也可以实现苹果启动设备的时候获取文件。

使用二级域名重定向的时候,要对apple-app-site-association文件进行加密。

而且此文件的类型应该是application/pkcs7-mime

常见错误

Denying redirect 'https://www.domain.com/.well-known/apple-app-site-association' -> 'http://err.taobao.com/error1.html'
May 17 12:11:05 chengde-iPhone swcd(CoreUtils)[159] <Notice>: ### Rejecting URL 'https://www.domain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr

https://forums.developer.apple.com/thread/67882

http://stackoverflow.com/questions/34166173/apple-app-site-association-file-wont-download(解决方法)

https://gist.github.com/anhar/6d50c023f442fb2437e1#sign-the-apple-app-association-file-using-openssl(服务端和客户端需要做的事)

https://forum.ind.ie/t/ios-9-universal-links-apple-app-site-association-blues/986(一些注意事项)

检测工具

https://search.developer.apple.com/appsearch-validation-tool/

https://limitless-sierra-4673.herokuapp.com/

总结

最后用一张图来总结下这个流程,此外你也可以参考下苹果的文档,以备苹果更新

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容