zoukankan      html  css  js  c++  java
  • iOS9 新功能:Support Universal Links,iOS10 openUrl新函数

    先看官方文档: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代替打开。

  • 相关阅读:
    Delphi的 Format格式化函数
    Delphi的Trim函数
    Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
    Delphi容器类之---TOrderedList、TStack、TQueue、TObjectStack、TObjectQueue
    Delphi容器类之---TList、TObjectList、TComponentList、TClassList
    Delphi的分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同
    Delphi容器类之---TList、TStringList、TObjectList,以及一个例程的代码分析
    Linux C编程学习6---字符串处理、数据转换
    Linux C编程学习之开发工具3---多文件项目管理、Makefile、一个通用的Makefile
    Linux C编程学习之开发工具2---GDB调试器
  • 原文地址:https://www.cnblogs.com/breezemist/p/5653791.html
Copyright © 2011-2022 走看看