IOS|IOS JS交互的方法

WKWebViewJS交互的基本步骤:
1:创建WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
2:创建WKUserContentController *userContentController = [[WKUserContentController alloc] init];
3:[userContentController addScriptMessageHandler:self name:@"functionGetUserInfo(JS中的函数名)"];
4: configuration.userContentController = userContentController;
5:创建 self.webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration];
6:监听WKScriptMessageHandler中的 - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message方法,其中message.name可以的到函数名。
7:如果要将本地的数据传输给webView 则调用[self.webView evaluateJavaScript:[NSString stringWithFormat:@"hx.callback('%@'); ",dataStr] completionHandler:^(id _Nullable result, NSError * _Nullable error) {JWNSLog(@"%@", error); }]; 其中dataStr是要传输的json字符串。
8:dealloc 中remove掉之前的方法。[self.userContentController removeScriptMessageHandlerForName:@"functionGetUserInfo(JS中的函数名)"];


UIWebViewJS交互基本步骤:
1:在webViewDidFinishLoad方法中创建JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
2:创建具体的方法
context[@"functionPay(JS中函数名)"] = ^() {
NSArray *args = [JSContext currentArguments];
NSMutableArray *webPayArray = [NSMutableArray array]; //webpayArray中储存的传递过来的所有数据
for (JSValue *jsVal in args) {
[webPayArray addObject:jsVal.toString];
}
};
【IOS|IOS JS交互的方法】3:如果要向JS中传递数据[weakSelf.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"hx.callback('%@'); ",dataStr]]; //dataStr为json字符串

    推荐阅读