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

第一点,链接打开网址 顾名思义

第二点,链接打开app, 通常 我们都会用 url scheme(schema)  就是 在info 中 可以配置几个目标需求app的 一个 schema (关键key 唯一应用标识),然后使用 openUrl 方法打开. 这里用 链接打开.

原因: (1)schema 方式容易暴露用户数据:如果有人拿到 schema 利用 AppDelegate 里面 canOpenURL:方法  就可以知道 用户手机里面 都安装了啥 ,  我也不知道  为什么有这么多人会取巧 用在了 外门邪道,当然 苹果疾恶如仇 , 在iOS9里面 对该策略有了限制,不能 用 跑代码的方式来检测 用户APP安装使用情况了

(2)schema 容易重复: 很可能 没有交集的两个开发团队 取了相同的 url scheme 名字,然后 iPhone自己蒙圈了,到底该怎么办,然后手机default状态 没有任何处理 ,接着用户就会不知道该干啥: “我刚刚不是点了那个按钮么,这个手机卡住了还是怎么着 没反应呢”?

(3)universal links 不仅仅能解决以上两个问题 (没错 更安全 不怕信息泄漏 有人再检测 你手机app列表了, 域名唯一了),而且 是上下文链接紧密的,你可以直接跳转已经安装的app或者 跳转去下载这个应用 或者其他 的链接什么的

服务端操作:         

这个 universal links 需要服务端的小伙伴 帮忙处理一下,注册一个域名,比如http://xxxx.com 作为我们的universal link.

(1)首先需要购买SSL证书,为了 使用 SSL通过 get 请求访问到访问域名(以及下面的JSON)

(2)然后配置一些服务

“支持上传一个 JSON 文件到你的域名” :这个需要在服务器的根目录下面,添加文件名为apple-app-site-association(没有后缀)的一个文件,然后在里面添加上如下的内容:

{
"applinks": {
"apps": [],
"details": [
{
"appID": "XXXXXXXX",
"paths": [
"/videos/\*"
]
}
]
}
}

关键 是 appId  是 开发者账号的 teamId 和 app的bundleId 拼成的 例如:

teamId +  “.” + bundleId  拼写成的字符串

客户前端操作:

注册你的App,使其能够处理universal links

需要在 Xcode 的 capabilities 里 添加你的 app 域名, 必须使用 “applinks:”作为前缀还添加一些你可能拥有的子域和扩展(www.xxxx.com, tests.xxxx.com 等等)。

然后就可以用 目标链接 放在 safari 里 测试 看看能不能跳转应用 ,或者 去下载应用了.

有类似的第三方,使用集成的方式 ,不需要我们域名的问题,只需要 提供 teamId, 然后为我们生成一个”短链接”,把这个链接 放在微信 或者  safari里 就可以一键跳转应用 或者提示去下载应用了.

然后 根据需求 是打开页面 还是怎么的处理方法

因为 这个iOS9的新特性么,,如果 你还要支持 相对比较低的版本 一定要有预判断, 不然 会导致crash.  并且 很有可能 苹果 不测试这种问题 ,你的应用就上线了,等用户受影响了才反应过来.还得加急重新打包

都是血泪经验: 我们项目 使用 iOS9 font 然后仍然有相当一部分 iOS7的用户反馈 开启就闪退.没招  我们好多用户都钟情低版本 不愿意升级. 然后 我们紧急 修复这个问题 重新上架.(苹果 根本没审核低版本系统好吧~)

备注: 测试拿真机 ,  模拟器 不好使

iOS 9 的新功能 universal links的更多相关文章

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

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

  2. iOS9 新功能:Support Universal Links

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

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

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

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

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

  5. iOS Universal Links(通用链接)

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

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

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

  7. 原创开源项目HierarchyViewer for iOS 2.1 Beta新功能介绍

    回顾 HierarchyViewer for iOS是我们发布的一个开源项目,采用GPL v3.0协议. HierarchyViewer for iOS可以帮助iOS应用的开发和测试人员,在没有源代码 ...

  8. iOS 7新功能例子

    参考https://github.com/shu223/iOS7-Sampler Code examples for the new functions of iOS 7. Contents Dyna ...

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

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

随机推荐

  1. 设计模式中类的关系之依赖关系(Dependence)

    依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系.可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的. ...

  2. map--C++ STL 学习

    map–C++ STL 学习   Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力.   说下map内 ...

  3. String转int的几种常用方法

    String类型转int类型通常需要int的包装类Integer,该类有三个方法可以实现这种转换,分别为decode(String s).parseInt(String s).valueOf(Stri ...

  4. CentOS 5 上安装Oracle11g

    原创作品,出自 "深蓝的blog" 博客.欢迎转载.转载时请务必注明下面出处.否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlo ...

  5. echarts Y轴刻度保留几位小数

    yAxis: [ { type: 'value', name: '雨量(mm)', nameLocation: 'start', inverse: true, axisLabel: {         ...

  6. linux下的shell 快捷键

    Ctrl+p重复上一次命令Ctrl+a跳到第一个字符前Ctrl+x同上但再按一次会从新回到原位置Ctrl+b前移一个字符不删除字符情况下Ctrl+h删除前一个字符Ctrl+u删除提示符前的所有字符Ct ...

  7. docker搭建lnmp环境(问题,资料,命令)

    入门参考 http://www.runoob.com/docker/docker-install-nginx.html 十大常用命令玩转docker 1. #从官网拉取镜像 docker pull & ...

  8. cocos2d-x学习日志(18) --程序是怎样開始执行与结束?

    问题的由来 怎么样使用 Cocos2d-x 高速开发游戏.方法非常easy,你能够看看其自带的例程,或者从网上搜索教程,执行起第一个HelloWorld,然后在 HelloWorld 里面写相关逻辑代 ...

  9. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.1——使用Build Types

    问题: 你想要自定义debug和release的build types,并且新建一些新的types. 解决方案: 使用buildTypes块配置build types. 讨论: build type决 ...

  10. [HAOI2012] 容易题[母函数]

    794. [HAOI2012] 容易题 ★★☆   输入文件:easy.in   输出文件:easy.out   简单对比时间限制:1 s   内存限制:128 MB 秒 输入:easy.in 输出: ...