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

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

(_webView 是WKWebView,【method】是和H5約定好的字段,參數(shù)是H5傳過來)

//注冊(cè)方法

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

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

//實(shí)現(xiàn)方法

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

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

? ? ? ? //不帶參數(shù),直接進(jìn)行操作

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

? ? ? ?//帶參數(shù)的,去【message.body】獲取參數(shù)

? ? }

}

~~~~~~~~~以前的舊辦法~~~~~~~

一、

pod 'WebViewJavascriptBridge', '~> 6.0'

二、修改文件,刪除UIWebview部分(將壓縮包文件取代項(xiàng)目里的同名文件)

鏈接:代替文件下載地址密碼:yt90

三、修改完成后,在webviewVC導(dǎo)入文件名

.h文件復(fù)制下面代碼:

#import "WebViewJavascriptBridge.h"

@property (strong, nonatomic) WebViewJavascriptBridge *bridge;

.m文件復(fù)制下面代碼

- (WebViewJavascriptBridge *)bridge {

? ? if(!_bridge) {

? ? ? ? _bridge = [WebViewJavascriptBridge bridgeForWebView:_webView];

? ? ? ? [_bridge setWebViewDelegate:self];

? ? }

? ? return _bridge;

}

在viewdidload里面調(diào)用交互方法,

1、H5界面獲取app傳過去的值:

[self.bridge callHandler:@"方法名,兩端統(tǒng)一" data:@"app向H5傳的值,類型自定" responseCallback:^(id responseData) {

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

? ? }];

2、app獲取H5回調(diào)的值:

[self.bridge registerHandler:@"方法名,兩端統(tǒng)一"?handler:^(iddata,WVJBResponseCallbackresponseCallback) {

? ? ? ? responseCallback(data);

? ? }];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容