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

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

(_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);

    }];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容