參考文章:
IOS WKWebview 使用集錦
WKwebView和JS交互
自己的OCdemo
自己的swiftDemo
JS調(diào)用OC的方法
1、首先要實現(xiàn)一個協(xié)議WKScriptMessageHandler

1.png
2、在初始化WebView時,配置config

2.png
在dealloc里移除
-(void)removeScriptMessageHandlerForName:(NSString *)name;3、處理和實現(xiàn)方法
/**
根據(jù)方法名做相應(yīng)的處理
@param userContentController userContentController description
@param message message description
*/
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message{
//message.name,message.body,message.frameInfo
if ([message.name isEqualToString:@"WXPay"]) {
dispatch_async(dispatch_get_main_queue(), ^{
});
}
至此,H5調(diào)用OC的方法已完成
OC調(diào)用JS方法
在WebView加載完成后調(diào)用
#pragma mark- ------------------------OC 調(diào)用JS方法
//OC調(diào)用JS的方法:getImages()是方法名和參數(shù)
[_webView evaluateJavaScript:@"getImages()" completionHandler:^(id _Nullable script, NSError * _Nullable error) {
//代碼出錯可以在這里處理
}];
//pragma mark- ------------------------swift 調(diào)用JS方法
//在這里我調(diào)用的是點擊sendAPP按鈕的方法(注意打印結(jié)果輸出,我們并沒有點擊按鈕,但是輸出了fuction1方法)
webView.evaluateJavaScript("sendApp()") { (result, error) in
guard error == nil else {
print("there was an error")
print(error)
return
}
}