iOS9 新功能:Support Universal Links,iOS10 openUrl新函数
2016-07-08 16:20
387 查看
先看官方文档: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取具体的配置文件。为什么要到服务器取?这样就能增加一层验证,防止恶意程序代替正常的网站链接启动。
简单解释一下
我们都知道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.[/code]
注意,必须是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代替打开。
相关文章推荐
- 完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)
- h5和ios原生混合开发,h5数据列表页面上滑崩溃
- IOS如何在当前工程中导入另一个工程文件
- iOS开发:不显示状态栏
- iOS安全–不同平台的崩溃收集
- iOS安全–实时查看模拟器的日志输出
- iOS - 报错 linker command failed with exit code 1
- 自定义iOS下的log记录系统
- iOS 查询数组中的对象
- iOS 使用HealthKit框架实现获取今日步数
- 关于NSString stringWithFormat输出“%”问题
- ios 粘贴板
- IOS 复制 粘贴
- 音频播放
- 几个iOS工程通用模块介绍
- iOS 后台挂起程序
- iOS设计模式(八) 责任链模式
- iOS中四种存储方式
- iOS AFNetworking3.0以上版本 基本使用
- iOS 隐藏自定义tabbar