最近做的H5项目是需要嵌入到APP内使用的,这就涉及到js跟app交互的问题,我这边需要传值给app,以下是我在做项目过程中传值的方法,仅供参考。
AppData这个JSON对象是我们需要向后台传的所有值,同时我们需要判断终端设备,IOS终端需要加上window.webkit.messageHandlers,deliveryClueID这个是原生方法名。
var AppData = Object.assign(
{loanID:this.loanId},
{orderState:this.orderState}
);
var u = navigator.userAgent,
app = navigator.appVersion;
//android终端或者uc浏览器
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;
//ios终端
var isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X)/);
if(isiOS){
window.webkit.messageHandlers.deliveryClueID.postMessage(AppData);
}else if(isAndroid){
android.deliveryClueID(JSON.stringify(AppData));
}
或者你还可以这样?
这是网上别人方法,JS调用Android原生。
//第一种
JavaScript:android.原生方法名(params);
//第二种
window.android.原生方法名(params);
然后APP端需要做如下配置。
这是 IOS
配置跟调用方法,deliveryClueID是原生方法名,做IOS的大佬应该知道的。
let conf = WKWebViewConfiguration()
conf.userContentController = WKUserContentController()
conf.preferences.javaScriptEnabled = true
conf.selectionGranularity = WKSelectionGranularity.character
/// h5 调用 swift 提供的方法
conf.userContentController.add(self, name: deliveryClueID)
webView = WKWebView( frame: CGRect(x:0, y:KHeight_NavBar,width:kScreenWidth, height:kScreenHeight - KHeight_NavBar),configuration:conf)
Android怎么配置我就不知道了emmm。。。等我知道了再更吧!