OC-JS交互(WebViewJavascriptBridge使用說明)

首先確保一份已經配好功能的html文件。

 1.初始化一個webviewviewdidload

UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.bounds];

[self.view addSubview:webView];

 

 2.將此webviewWebViewJavascriptBridge關聯(viewdidload

if (_bridge) { return; }

 

  [WebViewJavascriptBridgeenableLogging];

 

    _bridge = [WebViewJavascriptBridgebridgeForWebView:webView webViewDelegate:self handler:^(id data,WVJBResponseCallback responseCallback) {

       

    }]; ps:此時你的webview就與js搭上橋了。下面就是方法的互調和參數的互傳。

 1 js調oc方法(可以通過dataoc方法傳值,使用responseCallback將值再返回給js

[_bridge registerHandler:@"testObjcCallback"handler:^(id data, WVJBResponseCallback responseCallback) {

        NSLog(@"testObjcCallbackcalled: %@", data);

        responseCallback(@"Response fromtestObjcCallback");

    }];

  這裏注意testObjcCallback這個方法的標示。html那邊的命名要跟ios這邊相同,才能調到這個方法。當然這個名字可以兩邊商量着自定義。簡單明確即可。

  2oc調js方法(通過data可以傳值,通過 response可以接受js那邊的返回值

id data = @{ @"greetingFromObjC": @"Hi there,JS!" };

    [_bridge callHandler:@"testJavascriptHandler" data:data responseCallback:^(id response) {

        NSLog(@"testJavascriptHandlerresponded: %@", response);

    }];

 注意這裏的 testJavascriptHandler也是個方法標示。

 3ocjs傳值(通過 response接受返回值

[_bridge send:@"A string sent from ObjC to JS" responseCallback:^(id response) {

        NSLog(@"sendMessage gotresponse: %@", response);

    }];

  4ocjs傳值(無返回值)

[_bridge send:@"A string sentfrom ObjC after Webview has loaded."];

 

 

 

 

WebViewJavascriptBridge這個第三方中有個

WebViewJavascriptBridge.js.text 中有這個段代碼

其中  callMotion: callMotion 就是和HTML 所約定的類名,JS端的類名和這個必須統一

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章