先看官方文档:https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html

简单解释一下

我们都知道ios应用能够注册自己的URL Schemes,之后通过点击链接访问应用,比如 TheTest://testUrl. 而如果是普通的http或者https链接,那么就会用safari打开。

如果我有一个资源,比如是一个pdf文件,在游览器中可以访问,地址是 http://test.com/aaa.pdf 。如果ios设备安装了我的app,那么在app中也能查看这个pdf。客户想要这样一个功能:点击了一个链接,如果安装了app,那么在app中打开,如果没装,那么在safari打开。

在ios9以前,用一个链接打开也有方法,但要多次跳转,十分不友好,基本不会使用。最常用的方法是建立2个url,一个是http://test.com/aaa.pdf这样的,一个是TheTest://aaa.pdf这样的,用户自己选择打开哪一个,也不太友好。

ios9 的 Support Universal Links 就能解决这个问题。

我们只需要在邮件中写一个标准的http链接,就是http://test.com/aaa.pdf这样的,点击之后,系统会判断是否有程序注册了这个链接,如果注册了,不会打开safari,而会打开这个程序。没有注册的话,还是通过safari打开。

具体实现如下:

1.配置ios工程:

这2个链接,就表示程序会到这2个domain取具体的配置文件。为什么要到服务器取?这样就能增加一层验证,防止恶意程序代替正常的网站链接启动。

The file needs to be accessible via HTTPS—without any redirects—at https://<domain>/apple-app-site-association or https://<domain>/.well-known/apple-app-site-association.

注意,必须是https的链接,而且不能有任何重定向操作。那么是不是必须使用经过CA认证的https呢?也就是说,能不能自己在内网上建立一个https服务器,让universal links工作呢?

这个问题,我到官方论坛提问了,链接如下 https://forums.developer.apple.com/thread/51619 ,必须使用CA认证的证书!如果实在内网测试,应该自己模拟CA颁发证书,并让系统信任自己创建的ca,那么问题又来了,如何让ios系统信任这个ca呢????是可以通过企业设备管理,把相关证书加入ios系统吗?

取的数据没什么特别,就是一个json数据,但是它的获取位置是固定的,要么是/apple-app-site-association,要么是

/.well-known/apple-app-site-association

{
"applinks": {
"apps": [],
"details": [
{
"appID": "Q4BE9Z32J8.com.kings.test",
"paths": [ "*" ]
}
]
}
}

具体的说明可以参看官方文档。

成功后,在邮件中点击普通的http://test.com/aaa.pdf链接,就会出现下图:直接进入了程序,注意右上角,点击后可以用游览器启动

而如果用游览器启动,有下图,看上方,还能用程序启动。系统会记录下你最后一次的选择,下次点击http链接时,会重复你的上次的选择。

另外,针对这个Universal link 功能,ios10加入了openURL:options:completionHandler:这个新api,其中options的参数有一个UIApplicationOpenURLOptionUniversalLinksOnly选项,默认是false,如果设置为true,当打开一个http这样的连接时,如果没有安装注册这个url的ios应用,函数就会返回错误,不会用safari代替打开。

iOS9 新功能:Support Universal Links,iOS10 openUrl新函数的更多相关文章

  1. iOS9 新功能:Support Universal Links

    先看官方文档:https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalL ...

  2. 支持iOS9 Universal links遇到的问题

    记录为iOS9上的APP支持Universal links遇到的一些问题. 在Web服务器上传apple-app-site-association文件 必须支持HTTPS获取配置文件 文件名后不加.j ...

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

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

  4. Android Studio 3.0 下载 使用新功能介绍

    谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.g ...

  5. iOS 通知的变化ios9-10,新功能展示

    二.新功能展示 1  使用 /iOS通知新功能玩法 2.  全面   iOS10里的通知与推送详情 一.变化 四.Notification(通知) 自从Notification被引入之后,苹果就不断的 ...

  6. HTML5基本特性和新功能

    HTML5的基本特征 1.向前兼容性 核心理念——平滑过渡! 不支持html5的浏览器可以向前兼容,并不会影响web内容的显示! 2.跨平台运行性 从pc浏览器到手机.平板电脑,甚至是智能电视. 只要 ...

  7. Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看

    Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看 來自TechEd North America 2013的第一手消息 以下資訊均 ...

  8. Atitit.linux 内核 新特性 新功能

    Atitit.linux 内核 新特性 新功能 1.  Linux 3.2内核新特性 2012-02-12 22:41:471 1.1. EXT4:支持更大的块2 1.2. BTRFS:更快的数据清理 ...

  9. 【老孟Flutter】Flutter 2的新功能

    老孟导读:昨天期待已久的 Flutter 2.0 终于发布了, Flutter Web和Null安全性趋于稳定,Flutter桌面安全性逐渐转向Beta版! 原文链接:https://medium.c ...

随机推荐

  1. 解决 Entity Framework 6.0 decimal 类型精度问题

    Ø  前言 本文主要解决 EF 中对于 MSSQL 数据库的 decimal 类型经度问题,经实验该问题仅在 CodeFirst 模式的情况下发生,话不多说直接看代码. 1.   假设我们有一张 Cu ...

  2. 【python小练】0012题

    第 0012 题: 敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好 ...

  3. Bootstrap 使用

    bootstrap模板为使IE6.7.8版本(IE9以下版本)浏览器兼容html5新增的标签,引入下面代码文件即可. <script src="https://oss.maxcdn.c ...

  4. Coursera, Deep Learning 4, Convolutional Neural Networks - week1

    CNN 主要解决 computer vision 问题,同时解决input X 维度太大的问题. Edge detection 下面演示了convolution 的概念 下图的 vertical ed ...

  5. PHP入门知识

    一.搭建开发环境 想要使用一门后端语言,当然是要先搭建开发环境,模拟出服务器环境,不然怎么体现出后端,所以就先大众使用使用的Apache.Mysql,如果不想那么多折腾,建议直接使用xampp或者wa ...

  6. kvm 搭建

    一,准备环境   物理机 虚拟机 操作系统 CentOS 6.8 x64 CentOS 6.8 x64 CPU/内存 10核超线程x2/64G 2核/4G 外网IP -- 内网IP eth1_192. ...

  7. js对象数组去重

    <script> var array = [{ greeting: "Hello", nickName: "Aziz" }, { greeting: ...

  8. android矩阵详解

    android矩阵:http://www.360doc.com/content/11/1215/11/7635_172396706.shtml

  9. MIME 类型

    关于读音 为了防止大家出去丢人,我先示范一下,MIME应该独坐[maim],听起来就好像“男人”的英语法人一样. 浏览器和MIME的关系 浏览器依靠MIME类型解释网页. 每当浏览器请求一个web页面 ...

  10. git 配置 BeyondCompare

    安装 Beyond Compare 4 配置 git git config --global merge.tool bc3 git config --global mergetool.bc3.path ...