vue WKWebView 交互

写在开始

目前AppStore提交已经彻底废弃UIWebView 以前一键接入的webjavascriptbridge也该放弃了
重新整理一下网页与原生的交互

iOS Objective-c

懒加载个webview

@interface ViewController ()<WKScriptMessageHandler>

@property(nonatomic,strong) WKWebView *webView;

@end
-(WKWebView *)webView{
    if (!_webView) {
        // 创建一个配置类
        WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]init];
        WKUserContentController *userContentController = [[WKUserContentController alloc]init];
        // 监听js调用 具体调用方式在js端
        // 需要实现WKScriptMessageHandler 中方法  在下文↓
        [userContentController addScriptMessageHandler:self name:@"jsCallNative"];
        configuration.userContentController = userContentController;
        _webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:configuration];
        _webView.navigationDelegate = self;
        _webView.scrollView.bounces = NO;
        [_webView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:1]];
    }
    return _webView;
}

实现WKScriptMessageHandler userContentController 监听js调用

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{
    // 登陆保存token
    if ([message.name isEqualToString:@"jsCallNative"]) {
        // data is message.body
    }
}

调用js中的方法

[self.webView evaluateJavaScript:[NSString stringWithFormat: @"nativeCallJS(%@)" ,[params JSONString] ]completionHandler:^(id _Nullable result, NSError * _Nullable error) {
                NSLog(@"调用js返回%@",result);
            }];

js

前端用的vue 大同小异

监听原生的调用

export default{
    ...
    created(){
        window.nativeCallJS = this.nativeCallJS
    },
    methods:{
        nativeCallJS:function(data){
            return "return data" + data
        }
    }
    ...
}

调用原生的方法

window.webkit.messageHandlers.jsCallNative.postMessage(params)

代码中无聊的地方太多 只是找些关键的贴出来 可能有错字 你说气不气

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值