前段时间和朋友(@品味生活)一起搞 iOS9的通用链接,我主要做了前面官方文档翻译工作,后面的一些东西都是他在搞,整理也是他整理的。

他的博客原文地址:http://pinwei.blog.51cto.com/5452359/1734167

转载请注明 地址

一、 通用链接介绍

Apple 推出通用链接:一种能够方便的通过传统 HTTP 链接来启动 APP, 使 用相同的网址打开网站和 APP。

当你的应用支持通用链接,iOS9 之后 , 用户可以点击一个链接跳转到你的网站,并获得无缝重定向到您安装的应用程序,而无需通过 Safari 浏览器。如果你的应用不支持的话,点击链接将会用 Safari 来打开。

二、通用链接的优点

通用链接比自定义的URL链接有几处尤为突出的好处,具体来说,通用链接:

独特性:与自定义的URL链接相比,通用链接不能被其他的应用程序所访问,因为

它们使用的是标准的HTTP 或 HTTPS 链接到你的网站。

安全性:当用户安装应用程序,iOS会检查您已经上传到web服务器文件,以确

保您的网站允许你的应用程序能打开代表它的URL 文件,只要你创建并且上传该

文件,那么你的应用和服务器之间的关联是安全的。

灵活性:当你的应用程序没有被安装的时候,通用链接照样能够工作。当用户没有

安装你的应用程序,点击该链接,将会以用户所期望的以Safari的形式访问。

简单性:通用链接既能支持你的网站,又能支持你的应用

私有性:其他的应用程序能和你的应用程序通信,不管你的应用是否被安装。

传统例子:

传统的密码重置流程是这样的:
    1, 您忘记了密码,让你点击“忘记密码”按钮,在应用程序l 输入您的电子邮件,并点击下一步
    2, 请检查您的电子邮件,点击重置密码链接
    3, Safari中的密码重置页面打开
    4, 您输入新密码并保存
    5, 切换回应用程序,并登录使用表示新密码

使用通用链接后:

随着通用的链接,我们可以从过程中完全删除 Safari 浏览器。 现在,用户可以重新 设置在应用程序的密码,允许应用程序来复位后也自动登录他们进来。 这是所有可能 的同时还具有重置密码的电子邮件的安全性,以确认身份。

它可以被用来大大提高以前烦人的工作流程的用户体验。

视频演示:http://t.cn/R4pxxB5 (利用“通用链接”改善“密码重置功能)

使用通用链接后有四种打开方式效果:

第一种:安装客户端后点击链接(检测应用是否安装,如果安装直接打开应用)

第二种:长按链接选择 Safari 中打开

第三种:长按链接选择在 XXX 中打开

第四种:删除应用后点击链接(检测应用是否安装,如果没有安装在 Safari 中 打开网址)

三、 通用链接的关键实现条件

  • 有一个注册的域名

  • 域名可通过 SSL 访问(应该是需要有效的证书)

  • 支持上传一个 JSON 文件到域名

  • 至少 iOS 9 beta 2 版本

  • 至少 Xcode 7 beta 2

  • 需要真机测试,模拟器不支持通用链接

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

四、 通用链接实现步骤

1, 开启 Associated Domains 域:

进入苹果Apple Developer --- Member Center - Certificates, Identifiers & Profiles – Identifiers - App IDs –Edit 然后开启打钩 Associated Domains 后保存。

2, 添加 Associated Domains 域:

说明:你的 APP 域名, 必须用 applinks: 前置它:还添加一些你可能 拥有的子域和扩展(www.domain.com, news.domain.com 等等)。

作用:配置之后你的 APP 会自动从你的域名请求一个特殊的 JSON 文 件 apple-app-site-association。当你第一次启动 APP,它会从 https://domain.com/apple-app-site-association 下载这个文件。

操作:项目 targets->Capabilities->Associated Domains

3, 上传 apple-app-site-association 文件到服务器的根目录:

注意事项(1)

1, paths 路径是大小写敏感的
2, paths 内容可明确哪些通用链接需要被处理,哪些不需要
3, NOT 使用:为了明确指出不被处理的链接,可增加 “NOT”在链接前面

例 如 "paths": [ "/wwdc/news/", "NOT /videos/wwdc/2010/*", "/videos/wwdc/201?/*"]

4, 你可以使用 * 明确所有的网页
5, 也可以使用一个明确的的 URL,例如 /wwdc/news/
6, 也可以追加 * 到你的 URL ,例如 /videos/wwdc/2015/* 也可以使用 * 来匹配任何字符,使用 ? 来匹配一个字符,可以在路径 中使用这种混搭的形式, 例如 /foo/*/bar/201?/mypage

注意事项(2)

1, “appID”组成部分:TeamID + BundleId TeamID
2, BundleId 一定要和 APP 的 BundleId 一致。
3, apple-app-site-association 文件不能带后缀
4, apple-app-site-association 文件需要上传到网站根目录
5, 每一个代表着应用的 字典,必须包含一个 appID 和 paths, appID 是teamID 和 bundleID,paths 是一个字符串的数组 明确着你的应用支持的通用链接和你的应用程序不支持的通用连接内容。

6, 内容如下例子

1
2
3
4
5
6
7
8
9
10
{
  "applinks": {
    "apps": [],
    "details": {
      "TBEJCS6FFP.com.domain.App": {
        "paths":[ "*" ]
      }
    }
  }
}

4, 在 APP 里处理通用链接:

例子:

为了在 APP 里支持通用链接, 你需要在 AppDelegate 里实现[application(_:continueUserActivity:restorationHandler:)]。

部分参考资料:
https://developer.apple.com/ios/download/ (AppleDeveloper)

http://www.cocoachina.com/ios/20150902/13321.html (Cocoachina)

http://www.jianshu.com/p/c2ca5b5f391f  (subvertwuxu 简书)

http://strivingboy.github.io/blog/2015/09/27/ios9 (github blog)

http://stackoverflow.com/questions/33391615/ios-9-universal-links-dont-work http://www.jackivers.me/blog/2015/9/17/list-of-universal-link-ios-9-apps(jack blog)

http://help.tune.com/marketing-console/ios-universal-links-with-tune/

iOS 9的 Universal Links 通用链接使用的更多相关文章

  1. iOS Universal Links(通用链接)

    公司的运维,发现最近大量的请求 /.well-known/apple-app-site-association这个文件,造成了大量的404,可是这是谁请求的呢? 其实是苹果从iOS9.3开始更改了通用 ...

  2. iOS 唤起APP之Universal Link(通用链接)

    什么是Universal Link(通用链接) Universal Link(通用链接)是Apple在iOS9推出的一种能够方便的通过传统HTTPS链接来启动APP的功能,可以使用相同的网址打开网址和 ...

  3. iOS 禁用`URL Scheme`和`Universal Link`(通用链接)

    为什么要禁用URL Scheme和Universal Link(通用链接) 通常我们APP中都会嵌套一些web页面,有时我们的web页面会被DNS劫持从而跳转到其他APP中:或者是某些APP的Univ ...

  4. iOS 9 的新功能 universal links

    什么是 universal links: (通用链接) 一种能够方便的通过传统 HTTP 链接来启动 APP, 使用相同的网址打开web page和 APP的方式. 第一点,链接打开网址 顾名思义 第 ...

  5. iOS 9学习系列:打通 iOS 9 的通用链接(Universal Links)

    在WWDC 2015 上, Apple 为 iOS 9 宣布了一个所谓 通用链接 的深层链接特性, 视频地址为 [无缝链接到您的 App].虽然它不是一个必须实现的功能, 但还是需要引起一些注意. 在 ...

  6. iOS 9 通用链接(Universal Links)

    什么是Universal Links? 在iOS9之前,对于从各种从浏览器.Safari中唤醒APP的需求,我们通常只能使用scheme.但是这种方式需要提前判断系统中是否安装了能够响应此scheme ...

  7. iOS通用链接(Universal Links)突然点击无效的解决方案

    接上文<微信中通过页面(H5)直接打开本地app的解决方案>已经把iOS搞定并且已经正常能跑了,突然就再也用不了了... 问题描述 测试告诉我,如果从微信打开App之后,点击App右上角的 ...

  8. 简单配置iOS的通用链接,迅速解决“universal link 校验不通过”问题!

    对于需要使用微信支付等功能的APP来说,对接微信提供的openSDK是不可缺少的一环.随着苹果iOS 13系统版本的安全升级,为此openSDK在1.8.6版本进行了适配.1.8.6之后的openSD ...

  9. iOS 微信打开第三方应用(Universal Links 和 URL Schemes)

    一.前言 项目中时常有这种需求, 是通过链接跳转到应用内部,现在iOS主流的方案有两个 Schema: 常用在于一个应用跳转到另一个应用内部,属于应用间的跳转.当然ios9以下,网页可以通过schem ...

随机推荐

  1. Xtrabackup 对MYSQL进行备份还原

    在操作MYSQL中注意两个概念: 干什么都记得 flush privileges; grant all on *.* to root@'localhost' identified by 'passwo ...

  2. 51单片机模拟I2C总线的C语言实现

    电路原理图   EEPROM为ATMEL公司的AT24C01A.单片机为ATMEL公司的AT89C51. 软件说明 C语言为Franklin C V3.2.将源程序另存为testi2c.c,用命令 C ...

  3. android R.id.转化为view

    LayoutInflater inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view ...

  4. HDU_2019——向排序好的数列中插入数

    Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序.   Input 输入数据包含多 ...

  5. maven安装 maven上传jar包到库里面

    maven的安装与配置:http://pansanday.blog.163.com/blog/static/381662802012727103454743/ maven上传jar包到库里面: 将私有 ...

  6. C++中虚函数的作用是什么?它应该怎么用呢?(转)

    虚函数联系到多态,多态联系到继承.所以本文中都是在继承层次上做文章.没了继承,什么都没得谈. 下面是对C++的虚函数这玩意儿的理解. 一, 什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你 ...

  7. 内部类之.this&&.new

    一..this 我们都知道this是指当前类中的对象本身,但是在内部类中需要指明外部类时,this不再起作用,那应该怎么做呢?下面,让我们看看: public class DotThis { void ...

  8. 模块计算机类型“X64”与目标计算机类型“x86”冲突

    问题描述:在X64 平台上开发dll 文件,在生成dll时Vs 2010 出现如下错误 :"fatal error LNK1112: 模块计算机类型"X64"与目标计算机 ...

  9. 使用AudioTrack播放PCM音频数据(android)

    众所周知,Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的.MediaPl ...

  10. Java基础知识强化60:经典查找之二分查找

    1. 二分查找       二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 比较 ...