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截图_动力节点Java学院整理
Jul 11 HTML / CSS
css3气泡 css3关键帧动画创建的动态通知气泡
Feb 26 HTML / CSS
css3新增颜色表示方式分享
Apr 15 HTML / CSS
CSS3圆角边框和边界图片效果实例
Jul 01 HTML / CSS
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
Aug 24 HTML / CSS
html5的localstorage详解
May 09 HTML / CSS
canvas烟花特效锦集
Jan 17 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
Jun 09 HTML / CSS
浅谈HTML5 服务器推送事件(Server-sent Events)
Aug 01 HTML / CSS
HTML5 FileReader对象的具体使用方法
May 22 HTML / CSS
解决html5中的video标签ios系统中无法播放使用的问题
Aug 10 HTML / CSS
5个HTML5的常用本地存储方式详解与介绍
Mar 27 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
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
老生常谈Python基础之字符编码
2017/06/14 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
python中pop()函数的语法与实例
2020/12/01 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
试述DBMS的主要功能
2016/11/13 面试题
艺术专业大学生自我评价
2013/09/22 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
龙门石窟导游词
2015/02/02 职场文书
就业证明函
2015/06/17 职场文书
神秘岛读书笔记
2015/07/01 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL