LinkedME|iOS移动应用开发者不得不知道的Deep Linking技术

本文作者徐斌,原腾信IOS工程师,现LinkedME高级工程师。

SandBox是什么?

SandBox(沙盒)机制规定应用程序只能够读取应用程序内部的数据,不可以访问其他应用的信息数据。

在iOS设备中每一个APP都有自己的储存空间

APP只能访问自己的沙盒目录下内容,不能访问其它存储空间的内容

应用程序的数据请求需要经过权限检测,检测不通过则不执行

为什么要使用沙盒机制?

SandBox是安全体系中的一种机制,从而苹果公司在设计iOS系统时,考虑应用之间的信息安全,对应用程序的访问权限设置限制。

沙盒机制有什么弊端?

使用沙盒机制后APP之间不能相互访问通信,使得APP成为一个个的信息孤岛。

怎么解决这个问题?

为了解决APP信息孤岛问题,苹果在iOS 4中推出了URI Scheme技术,可以通过特定的URL方式传递参数给另一个APP。例如Uber://pid=3894&source=25,linkedmedemo:/ /id=2351。

怎么配置URI Scheme?

在iOS工程中,打开Info.plist文件,添加URL Types节点即可。在这个节点里,可以自定义协议名称,如linkedmedemo,这个形式的 URI 就会关联到唯品会客户端。众多开发者对URI Scheme已经不再陌生,通常在集成社会化分享组件或深度链接技术服务(知名品牌有友盟和LinkedME)时,必须填写URI Scheme。

代码实现

在 Info.plist 里面设置完 URL types 之后,就可以在程序中处理这类 URL 的打开请求。在外部程序中,如果打开了指定自定义协议的 URL,程序中 APPlication delegate 的 APPlication:handleOpenURL: 方法就会被调用,在这个方法里,可以获取到触发这个方法的 URL,可以通过对这个URL进行判断,例如根据不同的Host,不同的 Query String 来执行不同的动作。

URL构建

注意:当前唯品会客户端并不支持这样的调用方式,这里仅是一个示例。

URI Scheme存在的问题?

URI Scheme能够实现APP与APP之间的关联,并且是无缝的。例如QQ音乐跳转全民K歌,礼物说跳转淘宝等等。由于H5相对于APP轻量,H5和APP要兼并开发。然而,从微信和微博的内置浏览器查看H5页面时,大部分APP不能够回到APP查看相同的内容。例如知乎、今日头条是可以的。它们需要从Safari打开zhihu://id=2370247&source=zhig才行。

通过Safari跳转,如果用户已安装APP直接跳转到APP中,如果用户没有安装APP则跳转到APP Store中下载,下载完成后打开APP不能到达用户需要的页面。

怎么解决这些问题呢?

苹果在iOS 9中推出Universal Links(通用连接) 一种能够方便的通过传统 HTTPS 链接来启动 APP, 使用相同的网址打开网站和 APP。

通过唯一的网址, 不需要特别的URI Scheme就可以链接一个特定APP里面的视图 。比如:一个APP分享内容到微信,然后用户在微信内置浏览器中看到H5页面内容,然后用户触发Universal Links后,直接打开APP内相同的页面内容。

NOTE

Universal links let iOS 9 users open your APP when they tap links to your website within WKWebView andUIWebView views and Safari pages, in addition to links that result in a call to openURL:, such as those that occur in Mail, Messages, and other APPs.

For users who are running versions of iOS earlier than 9.0, tAPPing a universal link to your website opens the link in Safari.

怎么使用 Universal Links?

Step1:创建一个JSON 格式的APPle-APP-site-association 文件如下:

根据 paths 键设定允许的路径列表, 或只是一个星号如果你想打开 APP 而不管路径是什么。

注意:paths 路径是大小写敏感的

NOTE:The website paths you specify in the paths array are case sensitive.”

“APPID”组成部分:TeamID + BundleId TeamID可以从苹果开发账号页面“Your Account”下查看,BundleId就直接在工程里看了。

Step2:上传 APPle-APP-site-association 文件注意:

1、上传到web server根目录下;

2、web server 需要支持https,客户端需要通告https访问,并且不支持任何重定向;

upload it to the root of your HTTPS web server. The file needs to be accessible via HTTPS—without any redirects—athttps:///APPle-APP-site-association. Next, you need to handle universal links in your APP.

Step3:在 APP 里处理通用链接

1、添加域名到 Capabilities在 Xcode 的 capabilities 里 添加你的 APP 域名, 必须用 APPlinks: 前置它

APP从上面的域名请求Step2中创建的JSON 文件 APPle-APP-site-association。当你第一次启动 APP,它会从https://domain.com/APPle-APP-site-association下载这个文件。

2.在 APPDelegate 里支持通用链接

​实现: - (BOOL)APPlication:(UIAPPlication *)APPlication continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler方法。

当 userActivity 是 NSUserActivityTypeBrowsingWeb 类型, 则意味着它已经由通用链接 API 代理。这样的话, 它保证用户打开的 URL 将有一个非空的 webpageURL 属性。

移动应用实现深度链接需要考虑非常多复杂的情况,比如支持各种手机机型、移动操作系统、浏览器、系统版本等等,还要考虑到深度链接统计分析的诸多问题。这些问题都是建立在用户已经安装APP,如果没有安装APP,用户下载安装,打开APP是否能够看到对应的页面,将是非常困难的问题。

我们正致力于为移动开发者提供稳定、安全、免费的技术服务,帮助APP提高用户增长,当拥有APP拥有流量之后,帮助APP实现流量变现。

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

推荐阅读更多精彩内容