1、schema

现在线上大多数 App 使用的就是 schema 跳转,都对应一套路由法则,基本都能做到跳转到 App 内任一界面。

location.href?=?'schema://xxxx'

但 schema 有个弊端:

iOS中,如果用户没有安装App,那么他一定会经历2个事情:

1、schema打开app,但是失败,延迟后,跳转下载App

2、跳转下载App之前schema会弹个可恶的跳转失败的框,然后再延迟后弹跳转AppStore的框

再就是 schema 被微信等应用禁止跳转了。

2、Universal Link

Universal Link和 schema 一样,目前还未被微信等禁止,也不会弹出跳转失败的弹出框。

Universal Link实现过程

1、一个支持 SSL 访问的域名,且不能是自建证书的 https 域名

2、新建一个apple-app-site-association文件,上传到域名根目录下,或 .well-known 文件夹下,

apple-app-site-association文件内容是一个 json

{

"applinks":

{

"apps":[],

"details":[

{

"appID":"ABCDEFG.com.aaa.bbb.ccc",

"paths":["NOT /aaaa/*","/iosuniversallink/*"]

},

{

"appID":"GFEDCBA.com.aaa.bbb.ccc",

"paths":["NOT /aaaa/*","/iosuniversallink/*"]

}

]

}

}

appId 为 teamId + boundleId

paths 为域名下可识别或不可识别的 path 路径, 如 https://www.xxx.com/iosuniversallink/*, 就可以唤起 app, 而 https://www.xxx.com/aaaa/xxxxx则直接跳转到 web 页了。

3、配置iOS App工程

开发者中心证书打开Associated Domains

工程配置Associated Domains

将你apple-app-site-association所在域名配置进去

给你的工程像Schema的OpenUrl一样,编写App被唤醒后的处理逻辑

4、Universal Link的基本运作流程

APP第一次启动 or APP更新版本后第一次启动

APP向工程里配置的域名发起Get请求拉取apple-app-association Json File

APP将apple-app-association注册给系统

由任意webview发起跳转的url,如果命中了apple-app-association注册过的通用链接

打开App,触发Universal Link delegate

没命中,webview继续跳转url

在你进行apple-app-association 以及 App工程的配置之后,整个Universal Link的运作流程完全由系统控制了

Universal Link 跨域

Universal Link有跨域问题,Universal Link必须要求跨域,如果不跨域,就不行,就失效,就不工作。(iOS 9.2之后的改动)

假如当前网页的域名是 A

当前网页发起跳转的域名是 B

必须要求 B 和 A 是不同域名,才会触发Universal Link

如果B 和 A 是相同域名,只会继续在当前WebView里面进行跳转,哪怕你的Universal Link一切正常,根本不会打开App

产品需求

如果已安装App,跳转对应界面

如果没安装App,跳转App下载界面

已安装App

打开App 触发handleUniversalLink

走到/_iosuniversallink/分支,拼接出任意App内的界面路由

跳转界面

未安装App

WebView原地跳转https://xxx.xxx.xxx/_iosuniversallink/*

命中服务器的重定向逻辑

重定向到AppStore跳转页面

打开AppStore下载

如果已安装App,跳转对应界面

如果没安装App,跳转App下载界面

解决了旧Schema模式下的弊端问题:

Schema无法判断是否安装App,只能采用setTimeout的Trick方式

Schema的Trick方式会有一个丑陋的错误跳转弹框

Schema无法在微信/手百等App内,打开我们自己的App

简单的说,这样设计的初衷就是,我不为了通用链接这一目的来使用Universal Link,来统一WAP&APP的URL跳转,我就为了把Universal Link当做加强版Schema来使用

wap ios android,wap 唤起App 的两种方式Schema Universal Link相关推荐

  1. android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...

    本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,noti ...

  2. Android页面数据传递的两种方式

    在android中实现页面中数据的传递有两种方式: 1:第一种数据传递的方式是通过inputExtra方法来进行数据的传递的 2:第二中方法是通过bundle的方法来实现数据的传递的 接下来我们首先来 ...

  3. Android点击图片随机,android 设置图片随机出现-两种方式

    android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的id ivBg ...

  4. PyCharm创建app的两种方式

    PyCharm创建app的两种方式 方式1 1-1 在terminal中敲如下代码 python manage.py startapp xxx 1-2 在settings.py中INSTALLED_A ...

  5. android 设置图片随机出现-两种方式

    android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的idivBg = ...

  6. android客户端认证服务端的两种方式

    Your app shouldn't suffer SSL's problems http://thoughtcrime.org/blog/authenticity-is-broken-in-ssl- ...

  7. android动态居中布局,Android动态添加布局的两种方式

    释放双眼,带上耳机,听听看~! 前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的 ...

  8. iOS WKWebView和JS交互的两种方式

    2019独角兽企业重金招聘Python工程师标准>>> 本文介绍两种方式实现iOS WKWebView和JS交互 WKWebViewConfiguration注入WKScriptMe ...

  9. android动态改变布局,Android 动态添加布局的两种方式

    前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的两种方式,分别是 动态添加xml ...

最新文章

  1. 解决Windows7下vs2008 Active control test container 不能运行的问题
  2. SAP QM-IDI 初探
  3. netsuite 数据集成_Java中带有NetSuite数据实体的对象关系映射(ORM)
  4. jquerymobile应用中session、cookie
  5. 第五十九期:商用数据库之死:Oracle 面临困境
  6. 初学大数据之Python中5个最佳的数据科学库的学习
  7. 微信 html5禁止拖拽,js实现微信禁止h5网页下拉,禁止微信内置浏览器下拉网页...
  8. 如何制作频数折线图(详细)
  9. ViewFlipper(翻转视图)使用详解
  10. 测试用例的设计方法及例子
  11. new一个对象是个什么过程
  12. 微信小程序个人服务器搭建
  13. AT32F407/437 LWIP FreeRTOS Multicast
  14. SQL入门之第二一讲——IF函数的使用
  15. 如何将linux下home目录下的中文名改成英文名
  16. execve系统调用_Linux下的sys_execve系统调用
  17. 天津石油职业技术学院计算机网络技术专业,天津石油职业技术学院专业排名,招生专业目录(10篇)...
  18. powerpoint教程资料,PPT的
  19. ESD 控制的六项原则和 ESD 控制计划开发和实施的六个关键要素是您制定有效 ESD 控制计划的指南
  20. javawebJAVA JSP企业合同管理系统JSP合同签订管理系统JSP合同备案系统

热门文章

  1. JAVA多维分析报表怎么做_Quick BI 3.0 - 强大的多维分析表格:交叉表
  2. 像许多奢侈品一样,帆船的价值随着年龄的增长和市场条件的变化而变化。附加的“2023_MCM_Problem_Y_Boats.xlsx”文件包括大约 3500 的数据36至56英尺长的帆船在欧洲,加勒比
  3. 天津大学计算机学院考研经验帖,天津大学计算机科学与技术专业考研经验分享.pdf...
  4. Ouj复习日志 细菌实验分组
  5. 商业世界的交易结构到底有哪些?
  6. 【转】寻找一种易于理解的一致性算法(扩展版)
  7. 计算机课总结ppt,高级计算机体系结构-课程复习与总结ppt课件.ppt
  8. 使用免费快递接口查询物流信息
  9. Deepin 15.10 发布,深度操作系统
  10. 记录一下自己刷题的错题