wap ios android,wap 唤起App 的两种方式Schema Universal Link
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相关推荐
- android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...
本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,noti ...
- Android页面数据传递的两种方式
在android中实现页面中数据的传递有两种方式: 1:第一种数据传递的方式是通过inputExtra方法来进行数据的传递的 2:第二中方法是通过bundle的方法来实现数据的传递的 接下来我们首先来 ...
- Android点击图片随机,android 设置图片随机出现-两种方式
android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的id ivBg ...
- PyCharm创建app的两种方式
PyCharm创建app的两种方式 方式1 1-1 在terminal中敲如下代码 python manage.py startapp xxx 1-2 在settings.py中INSTALLED_A ...
- android 设置图片随机出现-两种方式
android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的idivBg = ...
- android客户端认证服务端的两种方式
Your app shouldn't suffer SSL's problems http://thoughtcrime.org/blog/authenticity-is-broken-in-ssl- ...
- android动态居中布局,Android动态添加布局的两种方式
释放双眼,带上耳机,听听看~! 前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的 ...
- iOS WKWebView和JS交互的两种方式
2019独角兽企业重金招聘Python工程师标准>>> 本文介绍两种方式实现iOS WKWebView和JS交互 WKWebViewConfiguration注入WKScriptMe ...
- android动态改变布局,Android 动态添加布局的两种方式
前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的两种方式,分别是 动态添加xml ...
最新文章
- 解决Windows7下vs2008 Active control test container 不能运行的问题
- SAP QM-IDI 初探
- netsuite 数据集成_Java中带有NetSuite数据实体的对象关系映射(ORM)
- jquerymobile应用中session、cookie
- 第五十九期:商用数据库之死:Oracle 面临困境
- 初学大数据之Python中5个最佳的数据科学库的学习
- 微信 html5禁止拖拽,js实现微信禁止h5网页下拉,禁止微信内置浏览器下拉网页...
- 如何制作频数折线图(详细)
- ViewFlipper(翻转视图)使用详解
- 测试用例的设计方法及例子
- new一个对象是个什么过程
- 微信小程序个人服务器搭建
- AT32F407/437 LWIP FreeRTOS Multicast
- SQL入门之第二一讲——IF函数的使用
- 如何将linux下home目录下的中文名改成英文名
- execve系统调用_Linux下的sys_execve系统调用
- 天津石油职业技术学院计算机网络技术专业,天津石油职业技术学院专业排名,招生专业目录(10篇)...
- powerpoint教程资料,PPT的
- ESD 控制的六项原则和 ESD 控制计划开发和实施的六个关键要素是您制定有效 ESD 控制计划的指南
- javawebJAVA JSP企业合同管理系统JSP合同签订管理系统JSP合同备案系统
热门文章
- JAVA多维分析报表怎么做_Quick BI 3.0 - 强大的多维分析表格:交叉表
- 像许多奢侈品一样,帆船的价值随着年龄的增长和市场条件的变化而变化。附加的“2023_MCM_Problem_Y_Boats.xlsx”文件包括大约 3500 的数据36至56英尺长的帆船在欧洲,加勒比
- 天津大学计算机学院考研经验帖,天津大学计算机科学与技术专业考研经验分享.pdf...
- Ouj复习日志 细菌实验分组
- 商业世界的交易结构到底有哪些?
- 【转】寻找一种易于理解的一致性算法(扩展版)
- 计算机课总结ppt,高级计算机体系结构-课程复习与总结ppt课件.ppt
- 使用免费快递接口查询物流信息
- Deepin 15.10 发布,深度操作系统
- 记录一下自己刷题的错题