工作中的一些知识总结

简介: 跳转 跳转登陆页 if(HybridMethod.isApp()) { RainbowBridge.callMethod('JsInvokeAppScope', 'goLogin'); } else { var _index = window.

判断h5页面是否App内打开

HybridMethod.isApp()

跳转

部分功能已封装至srcstatich5jsjshybridcomponent.js,可以直接调用

页面跳转

topage为跳转页面地址,若下表未给出目标页参数,topage直接为目标链接地址,否则为目标页参数

方法一

RainbowBridge.callMethod('JsInvokeAppScope', 'forward', {
    type: 'h5Web', //跳转类型native或h5Web或h5Native
    topage: 'showMallShake'
});

方法二

<div  data-forwardBox>
    <div data-forwardNoRight-topage="<% webpath.h5 %>/help/qalist.html?q=0&a=2" data-forwardNoRight-title="产品计划" data-forwardNoRight-type="h5Web">加入的计划是如何计息和派息的?</div>
</div>

弹窗

RainbowBridge.callMethod('JsInvokeAppScope','showAlert',obj,function(result){})

显示loading

loading:function(status){
    RainbowBridge.callMethod('JsInvokeAppScope','loading',{status:status});
},

弹出ActionSheet

showThemeDialog:function(obj){ //参数是一个对象,只有一个属性dialog,属性值是一个数组,数组每项又是一个对象,分别有两个属性:link,title    RainbowBridge.callMethod('JsInvokeAppScope','showThemeDialog',{
        dialog : obj.dialog
    });
},

结束刷新

RainbowBridge.callMethod('JsInvokeAppScope','endIntegralLoad',{});

跳转登陆页

if(HybridMethod.isApp()) {
    RainbowBridge.callMethod('JsInvokeAppScope', 'goLogin');
} else {
    var _index = window.location.href.indexOf('event');
    window.location.href = HybridParams.pc + '/event/login.html?backUrl=' + window.location.href.substring(_index);
}

跳转注册页

if(HybridMethod.isApp()){
    RainbowBridge.callMethod('JsInvokeAppScope','forward',{
        type: 'native',//跳转类型native或h5Web或h5Native
        topage: 'register'
    })
}else{
    window.location.href = HybridParams.pc + '/event/register/beginnerwelfare/indexh5.html';
}

or

RainbowBridge.callMethod('JsInvokeAppScope','goRegister',{});

跳转到app页面的时候可以给页面添加标题和其他文字

if(HybridMethod.isApp()){
    RainbowBridge.callMethod('JsInvokeAppScope','forward',{
        type: 'native',//跳转类型native或h5Web或h5Native
        topage: 'register',
        UIHeader: {
            title: "分享领奖", //标题
            right:{ //标题栏右边的显示
                type:"word",//类型文字word或类型icon图片或share
                content:"中奖记录",//内容为文字或icon图片地址
                action:{ //这个type点击后的跳转
                    type: 'h5Web',//跳转类型native或h5Web或h5Native
                    topage: LOCATIONORIGIN + '/integral/prizeRecord.html',
                    UIHeader:{ //点击后侧type内容跳转后的页面显示
                        title:"中奖记录"//标题
                    }
                }
            }
        }

    })
}else{
    window.location.href = HybridParams.pc + '/event/register/beginnerwelfare/indexh5.html';
}

跳转个人中心

if(HybridMethod.isApp()){ 
    RainbowBridge.callMethod('JsInvokeAppScope','forward',{
        type: 'native',//跳转类型native或h5Web或h5Native
        topage: 'user'
    })
}else{
    window.location.href = HybridParams.h5 + "/download";
}

跳转投资页

if (HybridMethod.isApp()) {
    RainbowBridge.callMethod('JsInvokeAppScope','forward',{
        type: 'native',
        topage: 'invest'
    });
}else{
    window.location.href = HybridParams.h5 + "/download";
}

已登录跳转到首页,没登录跳转到登录页

if(HybridMethod.isApp()){
    if(HybridParams.token){
        RainbowBridge.callMethod('JsInvokeAppScope','forward',{  
            type: 'native',//跳转类型native或h5Web或h5Native
            topage: 'home' //首页
        })
    }else{
        RainbowBridge.callMethod('JsInvokeAppScope','goLogin');
    }
}else{
    window.location.href= HybridParams.h5+'/download/';
}

跳转到充值

RainbowBridge.callMethod('JsInvokeAppScope','forward',{
    type: 'native',//跳转类型native或h5Web或h5Native
    topage: 'recharge'
})

跳转到账户安全(设置页面)

RainbowBridge.callMethod('JsInvokeAppScope','forward',{
    type: 'native',//跳转类型native或h5Web或h5Native
    topage: 'showSettingActivity'
})

跳转到积分商城

RainbowBridge.callMethod('JsInvokeAppScope','forward',{
    type: 'native',//跳转类型native或h5Web或h5Native
    topage: 'showMall'
})

关闭当前页面

if(HybridMethod.isApp()) {
    RainbowBridge.callMethod('JsInvokeAppScope','finish');
}

跳转到提现页面

var _li = $(this).closest('li');
if(HybridMethod.isApp()){ //这个页面已经不用了
    RainbowBridge.callMethod('JsInvokeAppScope','goForwardWithParams',{
        type : 'withdraw',
        lhhnum : '提现值'
    });
}

其他跳转例子

if(HybridMethod.isApp()){
    var topage = params.h5 + "/user/bonus_receive.html?rcode="+rcode;
    RainbowBridge.callMethod('JsInvokeAppScope','forward',{
        type: 'h5Web',//跳转类型native或h5Web或h5Native
        topage: topage,
        UIHeader:{ //跳转后页面的显示
            title:"好友邀你领红包",//标题
        }
    });
}else{
    window.location.assign(params.h5 + "/user/bonus_receive.html?rcode="+rcode);
}

设置当前页的标题

if(HybridMethod.isApp()){
    RainbowBridge.callMethod('JsInvokeAppScope','setWebTitle',{
        title: 'demo3-sub页面一前端设置当前页的标题', 
    });
}

其他跳转总结:

"experianceInvest"; 体验标投资
"feedback"; 意见反馈
"aboutUs"; 关于我们
"myNotice"; 公告
"message"; 消息
"myPrivilege"; 我的特权
"productDetail"; 计划详情 -------------需要参数 参数key : id
"getMoreByInvite";// 跳转多邀多的;页面为H5 但是因为有二级页面参数不好跳转 , 走本地页面流程
"showMallShake"; //积分商城摇一摇 页面为H5 但是因为有二级页面参数不好跳转 , 走本地页面流程
"moneyRecord";//资金明细

帮助中心功能

app内h5页面是否有“下拉刷新”功能 & “上拉加载更多”功能

type:1 下拉 type:2 上拉 type:3 both两个都有

RainbowBridge.callMethod('JsInvokeAppScope','setRefeshType',{
    type : 1
})

显示通用弹出框

var refreshdata = {
    "type": 9, 
    "message": "线下充值可能延至48小时到账建议使用在线通道充值", 
    "largebuttontext": "返回在线充值",
    "extraclicktext": "继续刷新余额",
};

复制操作

RainbowBridge.callMethod('JsInvokeAppScope','copyContent',{content:content});

复制邮箱

$('.kefu_email').click(function(){
    var txt = $(this).find('span').text();
    HybridMethod.invokeEmail(txt);
})

调起邮箱

invokeEmail:function(email){
    RainbowBridge.callMethod('JsInvokeAppScope','invokeEmail',{email:email});
}

粘贴到剪贴板

copyH5Content:function(content){
    RainbowBridge.callMethod('JsInvokeAppScope','copyH5Content',{content:content});
}

复制微信号

$('.ylb_weixin').click(function(){
    HybridMethod.copyH5Content('yonglibao');
})

跳转在线客服界面

$('.kefu_online').click(function(){
    RainbowBridge.callMethod('JsInvokeAppScope','toContactUs');
})

拨打电话

$('.ylb_phone').click(function(){
    HybridMethod.toCallUs('400-615-5566');
})

or

toCallUs:function(phone){
    RainbowBridge.callMethod('JsInvokeAppScope','toCallUs',{phone:phone});
},

照相机

camera:function(callback){
    RainbowBridge.callMethod('JsInvokeAppScope','camera',{},callback);
}

判断android和ios

isAndroid: function(){
    var u = navigator.userAgent;
    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端或者uc浏览器
    return isAndroid;
},
isIOS: function(){
    var u = navigator.userAgent;
    var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    return isiOS;
}

获取APP版本号

getAppVersion: function(){
    var that = this;
    if(HybridMethod.isApp()){
        RainbowBridge.callMethod('JsInvokeAppScope','getAppVersion',{},that.getAppVersionCallBack);
    }
    else{
        window.location.href= HybridParams.h5+'/landing/';
    }
},
//获取APP版本号回调
getAppVersionCallBack: function(result){
    var that = this;
    // result = { version: '5.1.4' };
    alert('版本号为'+result.version);
}

下载app

function weixin(){
  var ua = navigator.userAgent.toLowerCase(); //navigator是HTML中的内置对象,包含浏览器的信息;userAgent是navigator的属性方法,可以返回由客户机发送服务器的头部的值,作用就是返回当前用户所使用的是什么浏览器,toLowerCase()是将转换为小写
  return ua.match(/MicroMessenger/i)=="micromessenger";
};
function ios(){
  return /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent);
}
function downloadway(){
  var self = this;
  if(!weixin()){
    $('.download-btn').attr("href","http://a.app.qq.com/o/simple.jsp?pkgname=com.yonglibao.android");
  }else if(ios()){
    $('.download-btn').attr('href','https://itunes.apple.com/us/app/yong-li-bao-tou-zi-li-cai/id874240991?l=zh&ls=1&mt=8');
    $('.download-btn').click(function(){
      ga('send', 'event', '下载', 'iOS', {
        'metric3': 1
      });
    });
  }else{ //android
    $.ajax({
      type:"POST",
      dataType:"json",
      url:params.url + '/option/getConfig',
      success:function(response){
        console.log(response)
        if(response.code == 1000){
          $("#device-browser").html("Andriod");
              $('.download-btn').attr("href","https://yonglibao-app.oss-cn-hangzhou.aliyuncs.com/yonglibao_" + response.data.updateVersion.android_channel_version + ".apk");
              $(".download-btn").click(function(){
                  ga('send', 'event', '下载', '安卓', {
                      'metric3': 1
                  });
              });
        }else{
          alert(response.msg);
        }
      },
      error:function(response){
        alert(response.msg);
      }
    })
  }
}

分享

不需要回调的右上角分享

share: function () {
    var self = this;
    if (HybridMethod.isApp()) { //右上角分享
        RainbowBridge.callMethod('JsInvokeAppScope', 'setShare', {
            'needShare': 1 // 1: 需要分享按钮(默认); 2: 不需要分享按钮
        });
        HybridMethod.showAndSetRightShareBtn({
            title: '“辞旧辞旧迎新送金喜 新榜提名赢好礼',
            content: '年终盛宴,延续惊2018鸿运当投,品牌金饰天天送,上榜更有豪礼拿,苹果手机 、投资金条、2018现金大红包,就等你来!',
            imgUrl: "https://pc104.ylb.net//event/2017/newyear/images/share.jpg",
            needShare: 1,
            shareUrl: "http://pc104.ylb.net/event/2017/newyear/index.html",
            useDefault:0, //0:分享内容由前端自定义;1:分享内容由app抓取
            stayWhich: 'wechat,wx,qq', //分享支持哪几种方式;朋友圈,微信,qq
            delayShare:1,  //延迟分享,默认为0,即调用方法就分享,为1时即只传分享的参数,不立即分享,用户点击默认分享按钮时才分享
            isNeedCreate: 1
        });
    }
}

需要回调的右上角分享

share: function () {
    var self = this;
    if (HybridMethod.isApp()) { //右上角分享
        RainbowBridge.callMethod('JsInvokeAppScope', 'setShare', {
            'needShare': 1 // 1: 需要分享按钮(默认); 2: 不需要分享按钮
        });
        HybridMethod.showAndSetRightShareBtn({
            title: '“辞旧辞旧迎新送金喜 新榜提名赢好礼',
            content: '年终盛宴,延续惊2018鸿运当投,品牌金饰天天送,上榜更有豪礼拿,苹果手机 、投资金条、2018现金大红包,就等你来!',
            imgUrl: "https://pc104.ylb.net//event/2017/newyear/images/share.jpg",
            needShare: 1,
            shareUrl: "http://pc104.ylb.net/event/2017/newyear/index.html",
            callback: self.shareCallBack
        });
    }
},
// 分享回调
shareCallBack: function (res) { //在分享后点击返回永利宝会给res传值1,所以必须在分享后点击返回永利宝才成功
    if (res == 1 && !this.isAct1End) {
        var zhis = this;
        $.ajax({
            url: HybridParams.url + '/activity/ShareOpportunity',
            type: 'POST',
            headers: {
                'Authorization': HybridParams.token
            },
            dataType: 'json',
            success: function (res) {},
            error: function (e) {},
            complete: function () {} //ajax请求完成后执行
        });
    }
}

页面中按钮分享

RainbowBridge.callMethod('JsInvokeAppScope','share',{
    title: 'demo1页面中的分享按钮', 
    content: 'demo1页面中的分享按钮',
    useDefault:0,
    stayWhich: 'wechat,qq',
    imgUrl:HybridParams.pc + '/event/2017/sharedemo/images/demo1.png',
    shareUrl:HybridParams.pc + '/event/2017/sharedemo/demo1.html?a=1&b=2\#asd',
});

微信分享

我们项目中用到的微信分享方法的调用;

var weixin = require("../modules/weixin.jdk.js");//调用微信jdk
weixin.config({
    title: "标题",
    desc: "内容",
    imgUrl: 图片地址,
    link: 链接地址'
},false);

积分商城

积分记录明细页面:https://h5.yonglibao.com/integral/integralRecord.html

登录状态通过url传参

参数名 描述 类型
token 用户登录token String
dbnewopen 新窗口打开 Number

App-H5相关

名称 链接
银行限额 https://h5.yonglibao.com/limit/limit.html
平台数据 https://h5.yonglibao.com/platformdata/dataindex.html

通过获取url参数定义相关页面跳转参数

比如:http://www.yonglibao.com/?towhichpage = produky

var id = that.GetQueryString('towhichpage')||'',
    native = '',
    topage = '',
    id = '',
    number = '',
    title = ''
if(id == 'produky'){//跳产品页
    native = true;
    topage = productDetail;
    id = id;
    number = 2;
}else if(id == 'baidu'){//跳百度页面
    native = false;
    topage = 'http://www.baidu.com';
    title = '百度一下';
}else if(id == 'recharge'){//跳充值页
    native = true;
    topage = 'recharge';
}

安卓端

if (native == 'false') {
    window.location.href = 'yonglibao://JsInvokeAppScope:10025/forward?{"type":"web","topage":"'+ topage +'","UIHeader":{"title":"'+title+'"}}"';
}else{
    if(str != ""){
        window.location.href ='yonglibao://JsInvokeAppScope:10025/forward?{"type":"native","topage": "'+topage+'","params":{"'+id+'" : "'+number+'"}}';
    }else{
        window.location.href = 'yonglibao://JsInvokeAppScope:10025/forward?{"type":"native","topage":"'+ topage +'"}'; 
    }
}

ios终端

if (native == 'false') {
    window.location.href = 'yonglibao://JsInvokeAppScope?port=10025&forward={"type":"web","topage":"'+ topage +'","UIHeader":{"title":"百度一下"}}"';
}else{
    if(str != ""){
        window.location.href ='yonglibao://JsInvokeAppScope?port=10025&forward={"type":"native","topage": "'+topage+'","params":{"'+id+'" : "'+number+'"}}';
    }else{
        window.location.href = 'yonglibao://JsInvokeAppScope?port=10025&forward={"type":"native","topage":"'+ topage +'"}';  
    }
}

感悟:闲谈莫论他人非,每个人都有自己的思维,只有合不合适,没有对不对,不要把自己的观点强加给别人

目录
相关文章
|
前端开发
2020.07 G2 工作小结
? 修复的一些问题 修复 interval 下 shape='line' 设置 lineCap: 'round' 样式失效 Tip: 可用于进度条的绘制,相比于市面上现有的前端进度条组件,可以做到大小的自适应。 chart .interval() .position('const*value') .shape('line') .style({
|
Android开发
[凌浩雨] 工作一年
时间:2017.06.22-2018.06.22单位经历:诚运网络科技 -> 西北星信息技术 -> 北京乾元大通信息技术 - 诚运网络科技 在职时间:2017.02-2017.04 -- -- 大学学业只剩下最后一个学期,这个学期需要实习单位修学分,学校课程有规定实习这一学分。
1185 0
|
Web App开发 消息中间件 NoSQL
工作体会(第一次工作)
(有两个月没有来博客园看看了!) 我觉得主要有5个方面来总结的。 在同事的交流上:     刚刚进入这家公司的时候,看见的人不算多。在技术部呢,就我一个女生。当时也比较胆小,不敢主动和同事们说话的。
673 0
|
程序员 应用服务中间件 Java
工作一年记
昨晚去光谷某公司面试,与技术经理相谈甚欢,收获颇丰。 其间被技术经理问的1个题目难住了:Tomcat的运行原理是什么?如果让你写一个Tomcat,怎么写?我一下就懵了。 工作差不多有1年时间,一年里,几乎把自己感兴趣的各种技术都摸了一遍。从前端到后端再到移动端,似乎在向一个所谓技能树满满的全栈工程师迈进,然而问题在于:各种技术也仅仅只是摸了一点皮毛,会写一些应用层的code
1086 0