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解决移动页面上点击链接触发色块的问题
Jun 03 HTML / CSS
50个强大璀璨的CSS3/JS技术运用实例
Feb 27 HTML / CSS
CSS3 Columns分列式布局方法简介
May 03 HTML / CSS
基于Jquery和Css3代码制作可以缩放的搜索框
Nov 19 HTML / CSS
10分钟入门CSS3 Animation
Dec 25 HTML / CSS
canvas实现飞机打怪兽射击小游戏的示例代码
Jul 09 HTML / CSS
html5构建触屏网站之touch事件介绍
Jan 07 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
Nov 16 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
Oct 16 HTML / CSS
Html5页面二次分享的实现
Jul 30 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
Jan 22 HTML / CSS
CSS 左边固定宽右边自适应的6种方法
May 15 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中实现进程间通讯
2006/10/09 PHP
做一个有下拉功能的留言版
2006/10/09 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
在JavaScript中使用timer示例
2014/05/08 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
清除输入框内的空格
2016/12/21 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python进阶学习之特殊方法实例详析
2017/12/01 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
2014年个人工作总结范文
2014/11/07 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
Python读取和写入Excel数据
2022/04/20 Python