ios/android原生应用与H5交互

H5和原生交互是一个很常见的需求,现介绍一下基本的交互方式

Android端:

一、H5调用Android原生方法 主要实现方式是通过WebView的addJavascriptInterface方法向web注入一个自定义js对象实现js调用Android方法。

1、H5调用Android方法

1.1、例如: H5端调用Android端的finishActivity方法:

window.android.finishActivity('发送给android1')

1.2、Android向WebView注入一个对象(android):

@JavascriptInterface public void finishActivity(String  value) {    

 Log.e("js调起的原生方法=",value);    

 finish();

}

1.3、webview代码配置:

 

二、Android调用H5方法

2.1、H5需在window中挂载事件,暴露给移动端调用:

window.setAuthentication = this.setAuthentication  

//具体方法

setAuthentication(param) {      

this.roomTotal = JSON.stringify(param)      

return '......认证信息.......'    

}

 2.2、通过WebView的evaluateJavascript方法调用js方法: 

 2.3、Android 4.4以上调用evaluateJavascript来实现调用js方法,同时能够获取网页返回的数据。 webview.evaluateJavascript(javascript:方法名(参数),

new ValueCallback{          

public void onReciveValue(String value){}

})

2、参数递的是json格式的字符串,网页接受到的会是json对象

IOS端:

一、js调用iOS原生方法 通过WkwebView提供的WKScriptMessageHandler协议实现js调用iOS原生方法。

H5端调用iOS端的nativeMethod方法: window.webkit.messageHandlers.nativeMethod.postMessage('');

iOS原生注册方法

nativeMethod: [config.userContentController addScriptMessageHandler:self name:@"nativeMethod"]; 

当js调用iOS注册的方法时,iOS会走WKScriptMessageHandler的代理方法:

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message 

二、iOS调用js方法

通过WkWebView的evaluateJavaScript调起js方法:

NSString *promptCode = [NSString stringWithFormat:@"%@()", @"nativeCalljs0"]; [self.wkWebView evaluateJavaScript:promptCode completionHandler:^(id _Nullable result, NSError * _Nullable error) {        

//result可以接收到js方法的返回值        

NSLog(@"%@",result);

 }];

因为iOS和Android与H5调用方式不同,因此我们需要提前判断嵌入的平台,完整代码如下:

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值