Html5跳转到APP指定页面的实现


Posted in HTML / CSS onJanuary 14, 2020

1.设置urlschemes

Html5跳转到APP指定页面的实现

urlschemes尽量设一个唯一的字符串,例如可以设为:iOS+公司英文名+ 项目工程名
比如我的设为iOSTencentTest,在浏览器中输入地址iOSTencentTest://即可跳转到我的app

2.跳转到指定页面

在使用iOSTencentTest://打开app会调用AppDelegate的代理方法

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options

跳转指定页面在该方法中操作
iOSTencentTest://后面是可以添加参数的,例如iOSTencentTest://goodsDetails?id=xxxxx
goodsDetails可直接通过url.host获取
id=xxxxx 参数可直接通过url.query获取
可以根据自身需求去设置不同的host和参数。

Html5跳转到APP指定页面的实现

h5那边只需要执行:

window.location.href = 'iOSTencentTest://goodsDetails?id=xxxxx'

附:

//获取Window当前显示的ViewController
- (UIViewController*)currentViewController{
    //获得当前活动窗口的根视图
    UIViewController* vc = [UIApplication sharedApplication].keyWindow.rootViewController;
    while (1)
    {
        //根据不同的页面切换方式,逐步取得最上层的viewController
        if ([vc isKindOfClass:[UITabBarController class]]) {
            vc = ((UITabBarController*)vc).selectedViewController;
        }
        if ([vc isKindOfClass:[UINavigationController class]]) {
            vc = ((UINavigationController*)vc).visibleViewController;
        }
        if (vc.presentedViewController) {
            vc = vc.presentedViewController;
        }else{
            break;
        }
    }
    return vc;
}
//NSString类别方法
//通过url.query获取参数字符 再分成字典 
-(NSMutableDictionary *)getURLParameters
{
    if (!self.length) {
        return nil;
    }
    NSMutableDictionary  *params = [NSMutableDictionary   dictionary];
    if ([self containsString:@"&"]) {
        NSArray *urlComponents = [self componentsSeparatedByString:@"&"];

        for(NSString *keyValuePair in urlComponents) {

            //生成key/value
            NSArray *pairComponents = [keyValuePair componentsSeparatedByString:@"="];
            NSString *key = [pairComponents.firstObject stringByRemovingPercentEncoding];
            NSString*value = [pairComponents.lastObject stringByRemovingPercentEncoding];

            //key不能为nil

            if(key==nil|| value ==nil) continue;

            id existValue = [params valueForKey:key];
            if(existValue !=nil) {
                //已存在的值,生成数组。
                if([existValue isKindOfClass:[NSArray class]]) {
                    //已存在的值生成数组
                    NSMutableArray*items = [NSMutableArray arrayWithArray:existValue];
                    [items addObject:value];
                    [params setValue:items forKey:key];
                }else{
                    //非数组
                    [params setValue:@[existValue,value]forKey:key];
                }

            }else{
                //设置值
                [params setValue:value forKey:key];
            }

        }
    }else {
        //单个参数生成key/value
        NSArray *pairComponents = [self componentsSeparatedByString:@"="];
        if(pairComponents.count==1) {
            return nil;
        }
        //分隔值
        NSString *key = [pairComponents.firstObject stringByRemovingPercentEncoding];
        NSString *value = [pairComponents.lastObject stringByRemovingPercentEncoding];
        //key不能为nil
        if(key ==nil|| value ==nil)return nil;
        //设置值
        [params setValue:value forKey:key];

    }
    return params;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3的新特性介绍
Oct 31 HTML / CSS
html5+css3之CSS中的布局与Header的实现
Nov 21 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
May 23 HTML / CSS
利用纯CSS3实现tab选项卡切换示例代码
Sep 21 HTML / CSS
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
Dec 29 HTML / CSS
CSS3 分类菜单效果
May 27 HTML / CSS
利用CSS3的3D效果制作正方体
Mar 10 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
Oct 18 HTML / CSS
详解h5页面在不同ios设备上的问题总结
Mar 01 HTML / CSS
详解CSS伪元素的妙用单标签之美
May 25 HTML / CSS
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
Jul 16 HTML / CSS
CSS中实现动画效果-附案例
Feb 28 HTML / CSS
html5自动播放mov格式视频的实例代码
Jan 14 #HTML / CSS
html5响应式开发自动计算fontSize的方法
Jan 13 #HTML / CSS
html5 制作地图当前定位箭头的方法示例
Jan 10 #HTML / CSS
详解HTML5 Canvas标签及基本使用
Jan 10 #HTML / CSS
HTML5自定义mp3播放器源码
Jan 06 #HTML / CSS
html5 canvas手势解锁源码分享
Jan 07 #HTML / CSS
HTML5自定义视频播放器源码
Jan 06 #HTML / CSS
You might like
Zerg兵种介绍
2020/03/14 星际争霸
中东人咖啡哲学
2021/03/03 咖啡文化
PHP在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
Php部分常见问题总结
2006/10/09 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
python实现简易内存监控
2018/06/21 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
opencv python图像梯度实例详解
2020/02/04 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
社区母亲节活动方案
2014/03/05 职场文书
西式结婚主持词
2014/03/14 职场文书
新闻通讯稿模板
2015/07/22 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL