美文网首页
iOS和H5 交互(只写了iOS端)

iOS和H5 交互(只写了iOS端)

作者: 小y想吃糖 | 来源:发表于2020-05-08 14:53 被阅读0次

~~~~~~~~~更新~~~~~~~

(_webView 是WKWebView,【method】是和H5约定好的字段,参数是H5传过来)

//注册方法

    [_webView.configuration.userContentController addScriptMessageHandler:self name:@"method1"];

 [_webView.configuration.userContentController addScriptMessageHandler:self name:@"method2"];

//实现方法

- (void)userContentController:(WKUserContentController*)userContentControllerdidReceiveScriptMessage:(WKScriptMessage*)message {

    if([message.nameisEqualToString:@"method1"]) {

        //不带参数,直接进行操作

    }elseif([message.nameisEqualToString:@"method2"]) {

       //带参数的,去【message.body】获取参数

    }

}

~~~~~~~~~以前的旧办法~~~~~~~

一、

pod 'WebViewJavascriptBridge', '~> 6.0'

二、修改文件,删除UIWebview部分(将压缩包文件取代项目里的同名文件)

链接:代替文件下载地址密码:yt90

三、修改完成后,在webviewVC导入文件名

.h文件复制下面代码:

#import "WebViewJavascriptBridge.h"

@property (strong, nonatomic) WebViewJavascriptBridge *bridge;

.m文件复制下面代码

- (WebViewJavascriptBridge *)bridge {

    if(!_bridge) {

        _bridge = [WebViewJavascriptBridge bridgeForWebView:_webView];

        [_bridge setWebViewDelegate:self];

    }

    return _bridge;

}

在viewdidload里面调用交互方法,

1、H5界面获取app传过去的值:

[self.bridge callHandler:@"方法名,两端统一" data:@"app向H5传的值,类型自定" responseCallback:^(id responseData) {

        NSLog(@"ObjC received response: %@", responseData);

    }];

2、app获取H5回调的值:

[self.bridge registerHandler:@"方法名,两端统一" handler:^(iddata,WVJBResponseCallbackresponseCallback) {

        responseCallback(data);

    }];

相关文章

网友评论

      本文标题:iOS和H5 交互(只写了iOS端)

      本文链接:https://www.haomeiwen.com/subject/zjyfnhtx.html