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 相关文章推荐
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
Jan 23 HTML / CSS
纯css3显示隐藏一个div特效的具体实现
Feb 10 HTML / CSS
推荐10个CSS3 制作的创意下拉菜单效果
Feb 11 HTML / CSS
css3旋转木马_动力节点Java学院整理
Jul 12 HTML / CSS
详解HTML5中download属性的应用
Aug 06 HTML / CSS
HTML5之tabindex属性全面解析
Jul 07 HTML / CSS
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
Jan 10 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
Mar 15 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
Sep 30 HTML / CSS
用CSS3画一个爱心
Apr 27 HTML / CSS
html5表单的required属性使用
Jul 07 HTML / CSS
CSS3实现指纹特效代码
Mar 17 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/12/13 PHP
php mssql 数据库分页SQL语句
2008/12/16 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
js精度溢出解决方案
2012/12/02 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
JS实现的简单表单验证功能示例
2017/10/13 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
微信小程序实现循环动画效果
2018/07/16 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
深入源码解析Python中的对象与类型
2015/12/11 Python
python读取和保存视频文件
2018/04/16 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
保密承诺书
2014/03/27 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
婚庆司仪开场白
2015/05/29 职场文书
安全教育观后感
2015/06/17 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs