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中的Transition过度与Animation动画属性使用要点
May 20 HTML / CSS
CSS3 Notes: -webkit-box-reflect实现倒影的实例
Dec 08 HTML / CSS
你不知道的5个HTML5新功能
Jun 28 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
Nov 16 HTML / CSS
前端canvas水印快速制作(附完整代码)
Sep 19 HTML / CSS
HTML5 Canvas 起步(2) - 路径
May 12 HTML / CSS
HTML5 Notification(桌面提醒)功能使用实例
Mar 17 HTML / CSS
Html5元素及基本语法详解
Aug 02 HTML / CSS
html5简介_动力节点Java学院整理
Jul 07 HTML / CSS
HTML中table表格拆分合并(colspan、rowspan)
Apr 07 HTML / CSS
html5调用摄像头实例代码
Jun 28 HTML / CSS
Html5获取用户当前位置的几种方式
Jan 18 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
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
Python 转义字符详细介绍
2017/03/21 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
解决python运行启动报错问题
2020/06/01 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
python解包用法详解
2021/02/17 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
必须要使用游标的SQL语句有那些
2012/05/07 面试题
大学毕业生通用求职信
2013/09/28 职场文书
英文求职信结束语大全
2013/10/26 职场文书
大学教师年终总结的自我评价
2013/10/29 职场文书
办理护照介绍信
2014/01/16 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS