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 相关文章推荐
45个非常奇妙的CSS3 特性应用示例
Jan 01 HTML / CSS
使用css3制作登录表单的步骤
Apr 07 HTML / CSS
CSS3 @media的基本用法总结
Sep 10 HTML / CSS
css3弹性盒子flex实现三栏布局的实现
Nov 12 HTML / CSS
IE9下html5初试小刀
Sep 21 HTML / CSS
html5记忆翻牌游戏实现思路及代码
Jul 25 HTML / CSS
Html5 语法与规则简要概述
Jul 29 HTML / CSS
使用phonegap进行提示操作的具体方法
Mar 30 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
May 07 HTML / CSS
html5 postMessage前端跨域并前端监听的方法示例
Nov 01 HTML / CSS
详解canvas绘制多张图的排列顺序问题
Jan 21 HTML / CSS
CSS 还能这样玩?奇思妙想渐变的艺术
Apr 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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
JQuery中getJSON的使用方法
2010/12/13 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
Angular实现响应式表单
2017/08/04 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
使用python 3实现发送邮件功能
2018/06/15 Python
python 文件转成16进制数组的实例
2018/07/09 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python中使用while循环的实例
2019/08/05 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
单位在职证明范本
2014/01/09 职场文书
小区消防演习方案
2014/02/21 职场文书
运动会入场口号
2014/06/07 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
护林员个人总结
2015/03/04 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
Python基础之元类详解
2021/04/29 Python
利用python调用摄像头的实例分析
2021/06/07 Python