oc传值给vue
//OC端
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
NSLog(@"加载完成");
NSDictionary * dic = @{@"name":@"1231",@"phone":@"1121",@"age":@"25"};
NSString * json = [NSString dictToJsonStr:dic];
NSString *JSResult = [NSString stringWithFormat:@"shareResult('%@')",json];
[self.wkWebView evaluateJavaScript:JSResult completionHandler:^(id _Nullable result, NSError * _Nullable error) {
NSLog(@"OC调用JS%@", error);
}];
}
//前端 需要挂载
mounted() {
window.shareResult = this.shareResult
},
methods: {
shareResult:function(strings) {
alert('strings');
}
}
//vue调用原生方法
//oc端
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
WKUserContentController *userContentController = [[WKUserContentController alloc] init];
[userContentController addScriptMessageHandler:self name:@"Share"];//约定好的方法进行注册
configuration.userContentController = userContentController;
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage: (WKScriptMessage *)message
{
//JS调用OC方法
//message.boby就是JS里传过来的参数
NSLog(@"body:%@",message.body);
if ([message.name isEqualToString:@"Share"]) {
//自己操作
}
//vue端
shareClick() {
window.webkit.messageHandlers.Share.postMessage({title:'测试分享的标题',content:'测试分享的内容',url:'https://github.com/maying1992'});
}