~~~~~~~~~更新~~~~~~~
(_webView 是WKWebView,【method】是和H5約定好的字段,參數(shù)是H5傳過來)
//注冊(cè)方法
? ? [_webView.configuration.userContentController addScriptMessageHandler:self name:@"method1"];
?[_webView.configuration.userContentController addScriptMessageHandler:self?name:@"method2"];
//實(shí)現(xiàn)方法
- (void)userContentController:(WKUserContentController*)userContentControllerdidReceiveScriptMessage:(WKScriptMessage*)message {
? ? if([message.nameisEqualToString:@"method1"]) {
? ? ? ? //不帶參數(shù),直接進(jìn)行操作
? ? }elseif([message.nameisEqualToString:@"method2"]) {
? ? ? ?//帶參數(shù)的,去【message.body】獲取參數(shù)
? ? }
}
~~~~~~~~~以前的舊辦法~~~~~~~
一、
pod 'WebViewJavascriptBridge', '~> 6.0'
二、修改文件,刪除UIWebview部分(將壓縮包文件取代項(xiàng)目里的同名文件)
鏈接:代替文件下載地址密碼:yt90
三、修改完成后,在webviewVC導(dǎo)入文件名
.h文件復(fù)制下面代碼:
#import "WebViewJavascriptBridge.h"
@property (strong, nonatomic) WebViewJavascriptBridge *bridge;
.m文件復(fù)制下面代碼
- (WebViewJavascriptBridge *)bridge {
? ? if(!_bridge) {
? ? ? ? _bridge = [WebViewJavascriptBridge bridgeForWebView:_webView];
? ? ? ? [_bridge setWebViewDelegate:self];
? ? }
? ? return _bridge;
}
在viewdidload里面調(diào)用交互方法,
1、H5界面獲取app傳過去的值:
[self.bridge callHandler:@"方法名,兩端統(tǒng)一" data:@"app向H5傳的值,類型自定" responseCallback:^(id responseData) {
? ? ? ? NSLog(@"ObjC received response: %@", responseData);
? ? }];
2、app獲取H5回調(diào)的值:
[self.bridge registerHandler:@"方法名,兩端統(tǒng)一"?handler:^(iddata,WVJBResponseCallbackresponseCallback) {
? ? ? ? responseCallback(data);
? ? }];