WebView优化

使用框架

  • 使用大鬼头的JsBridge框架

JS调取原生

1.Android使用如下

webView.registerHandler("registerHandlerFromNative", new BridgeHandler() {
            @Override
            public void handler(String data, CallBackFunction function) {
                ...
                }
            }
        });

data参数规则如下

//action  不可为空  方法名  调用原生函数  与  原生函数命名统一
//needCallBack  可为空  默认为0    是否需要原生回调
//message  可为空,  使用场景为显示页面错误等供原生使用
//parameter  可为空  附加参数,用于复杂业务时,向原生传递参数 json结构

例如

{ 
  "action":"executeGetToken",
  "needCallBack":"1",
  "message":"获取Token",
  "parameter":{
    "state":1
  }
}

2.原生注册hander(registerHandlerFromNative)提供方法如下

  • executeGetPhoto(获取图片)
{ 
  "action":"executeGetPhoto",
  "needCallBack":"1",
  "message":"获取照片",
  "parameter":{ }
}
  • executeGetToken(获取token)
{ 
  "action":"executeGetToken",
  "needCallBack":"1",
  "message":"获取token",
  "parameter":{ 
    "tipMessage":"xxx业务需要授权"//用于弹窗展示
  }
}
  • executeInvalidLogin(登录失效)
{ 
  "action":"executeInvalidLogin",
  "needCallBack":"1",
  "message":"登录失效",
  "parameter":{ }
}
  • executeShareWeb(调用分享)
{ 
  "action":"executeShareWeb",
  "needCallBack":"1",
  "message":"调用分享",
  "parameter":{
    "shareUrl":"http://www.baidu.com",
    "shareContext":"shareContext",
    "shareTitle":"shareTitle",
    "imgUrl":"",
 }
}
  • executeShowLoading(显示加载框)
  • executeDismissLoading(隐藏加载框)
  • executeShowLoadFailed(加载失败)
  • executeShowNoNetwork(显示无网络)

原生调取JS

需要js端提供或者共同协商

你可能感兴趣的:(WebView优化)