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的rem属性制作响应式页面布局的要点解析
May 24 HTML / CSS
CSS类名支持中文命名的示例
Apr 04 HTML / CSS
使用CSS3来实现滚动视差效果的教程
Aug 24 HTML / CSS
简单掌握CSS3中resize属性的用法
Apr 01 HTML / CSS
CSS中越界问题的经典解决方案【推荐】
Apr 19 HTML / CSS
利用纯CSS3实现动态的自行车特效源码
Jan 20 HTML / CSS
HTML5实时语音通话聊天MP3压缩传输3KB每秒
Aug 28 HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
Mar 08 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
Jun 25 HTML / CSS
HTML5 语义化标签(移动端必备)
Aug 23 HTML / CSS
POST提交数据常见的四种方式
Jan 18 HTML / CSS
html原生table实现合并单元格以及合并表头的示例代码
May 07 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删除数组中重复元素的方法
2015/12/22 PHP
初识ThinkPHP控制器
2016/04/07 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
python传递参数方式小结
2015/04/17 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
Python中进程和线程的区别详解
2017/10/29 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
造价工程师个人求职信
2013/09/21 职场文书
总裁办公室主任职责
2014/01/02 职场文书
户外拓展活动方案
2014/02/11 职场文书
体育活动总结范文
2014/05/04 职场文书
爱心募捐通知范文
2015/04/27 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android