先看官方文档: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的更多相关文章

  1. iOS9 新功能:Support Universal Links,iOS10 openUrl新函数

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

  2. 教你轻松看懂 iOS9 新功能

    2015苹果全球开发者大会在6月9日凌晨,美国旧金山举行,fir.im 整理了一部分的资料,帮助了解 iOS9 的新特性与功能,感兴趣的可以看下. 关于iOS9新增功能 在WWDC 2015上苹果介绍 ...

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

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

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

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

  5. iOS 9 的新功能 universal links

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

  6. iOS Universal Links(通用链接)

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

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

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

  8. iOS微信里打开app,Universal Links

    这两天在弄分享,从第三方应用或者浏览器打开自己app的东西 传统的方式是通过URL Scheme的方式,但是iOS9以后又出了新的更完美的方式Universal Links. 传统的URL Schem ...

  9. What's new in Windows 10 Enterprise with Microsoft Edge.(Windows 10 新功能)

    What's new in Windows 10 Enterprise with Microsoft Edge --带有Edge浏览器的Windows 10 企业版的新功能 本文摘录自公司群发邮件, ...

随机推荐

  1. TEXTAREA自适应文字行数的多少

    <textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight&qu ...

  2. 如何重新划分linux分区大小

    1.下载脚本文件,将脚本文件内容复制 chmod +x resize.sh sudo ./resize.sh 输入上面命令后会看到下面的结果 root@odroid:~# sudo ./resize. ...

  3. webpack --- 详解

    官网: http://webpack.github.io/docs/using-loaders.html 简书: http://www.jianshu.com/p/42e11515c10f

  4. __getattitem_ \__setattitem__\__delitem__

    class Foo: def __getitem__(self, item): print('getitem',item) return self.__dict__[item] def __setit ...

  5. Asp.Net 自定义储存Session方式

    介绍 由于针对于自定义Session存储方式比较少,所以整理了使用自定义Session的方式.用于构建自定义会话存储提供程序代码,而不是使用默认的 SessionStore 介绍 背景 本文使用的是m ...

  6. 用java下载hdfs文件报NullPointerException

    用fs.copyToLocalFile( hdfsPath,localPath);下载hdfs的文件会报NullPointerException,具体报错为: java.lang.NullPointe ...

  7. supervisord安装使用简记

    What is supervisor Supervisor is a client/server system that allows its users to monitor and control ...

  8. Jquery的 each的使用 $.each()

    下面提一下each的几种常用的用法 1.each处理一维数组 var arr1 = [ "aaa", "bbb", "ccc" ]; $.e ...

  9. asp.net mvc 通过T4模板生成框架

    http://www.cnblogs.com/rdst/archive/2012/08/13/2637210.html http://www.kuqin.com/shuoit/20140716/341 ...

  10. 使用U盘重装电脑操作系统

    1. 打开360软件管家,找一个软件"蚂蚁U盘启动"下载,下载好以后打开,电脑上插入U盘,我们制作一个启动U盘备用! 图片图片 按提示制作好启动盘后,保管好U盘. 找一个系统下载网 ...