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 相关文章推荐
如何用border-image实现文字气泡边框的示例代码
Jan 21 HTML / CSS
Bootstrap 学习分享
Nov 12 HTML / CSS
html5开发之viewport使用
Oct 17 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
Nov 18 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
Jan 29 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
Jun 02 HTML / CSS
HTML5实现移动端复制功能
Apr 19 HTML / CSS
html5中嵌入视频自动播放的问题解决
May 25 HTML / CSS
AmazeUI 列表的实现示例
Aug 17 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
Nov 04 HTML / CSS
CSS极坐标的实例代码
Jun 03 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/26 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
webpack3之loader全解析
2017/10/26 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
python实现简单的TCP代理服务器
2014/10/08 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
对python中dict和json的区别详解
2018/12/18 Python
python代码区分大小写吗
2020/06/17 Python
Django实现内容缓存实例方法
2020/06/30 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
学校政风行风整改方案
2014/10/25 职场文书
学校国庆节活动总结
2015/03/23 职场文书
关于环保的宣传稿
2015/07/23 职场文书
小学总务工作总结
2015/08/13 职场文书
诚实守信主题班会
2015/08/13 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
python process模块的使用简介
2021/05/14 Python
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
table不让td文字溢出操作方法
2022/12/24 HTML / CSS