设为首页 加入收藏

TOP

Hybrid APP基础篇(五)->JSBridge实现示例(八)
2017-10-11 15:24:32 】 浏览:8348
Tags:Hybrid APP 基础 -> JSBridge 实现 示例
e]; } } /* Platform specific internals: iOS **********************************/ #elif defined WVJB_PLATFORM_IOS - (void) _platformSpecificSetup:(WVJB_WEBVIEW_TYPE*)webView { _webView = webView; _webView.delegate = self; _base = [[WebViewjava scriptBridgeBase alloc] init]; _base.delegate = self; } - (void) _platformSpecificDealloc { _webView.delegate = nil; } - (void)webViewDidFinishLoad:(UIWebView *)webView { if (webView != _webView) { return; } __strong WVJB_WEBVIEW_DELEGATE_TYPE* strongDelegate = _webViewDelegate; if (strongDelegate && [strongDelegate respondsToSelector:@selector(webViewDidFinishLoad:)]) { [strongDelegate webViewDidFinishLoad:webView]; } } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { if (webView != _webView) { return; } __strong WVJB_WEBVIEW_DELEGATE_TYPE* strongDelegate = _webViewDelegate; if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didFailLoadWithError:)]) { [strongDelegate webView:webView didFailLoadWithError:error]; } } //捕获url,并进行分析 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if (webView != _webView) { return YES; } NSURL *url = [request URL]; __strong WVJB_WEBVIEW_DELEGATE_TYPE* strongDelegate = _webViewDelegate; if ([_base isCorrectProcotocolScheme:url]) { if ([_base isBridgeLoadedURL:url]) { [_base injectjava scriptFile]; } else if ([_base isQueueMessageURL:url]) { NSString *messageQueueString = [self _eva luatejava script:[_base webViewjava scriptFetchQueyCommand]]; [_base flushMessageQueue:messageQueueString]; } else { [_base logUnkownMessage:url]; } return NO; } else if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:shouldStartLoadWithRequest:navigationType:)]) { return [strongDelegate webView:webView shouldStartLoadWithRequest:request navigationType:navigationType]; } else { return YES; } } - (void)webViewDidStartLoad:(UIWebView *)webView { if (webView != _webView) { return; } __strong WVJB_WEBVIEW_DELEGATE_TYPE* strongDelegate = _webViewDelegate; if (strongDelegate && [strongDelegate respondsToSelector:@selector(webViewDidStartLoad:)]) { [strongDelegate webViewDidStartLoad:webView]; } } #endif @end

WebViewjava scriptBridge是主要的JSBridge逻辑实现代码

Webview容器关键代码 实现

实现代码如下

建立JSBridge桥梁

- (void)viewDidLoad {
    
    [super viewDidLoad];
    // 一些其它操作
    
    // WebViewjava scriptBridge
    // 给webView建立JS和OC的沟通桥梁
    [WebViewjava scriptBridge enableLogging];
    self.bridge = [WebViewjava scriptBridge bridgeForWebView:self.wv];
    [self.bridge setWebViewDelegate:self];
    [self registAPIForJS];
}	
			

注册API方法

- (void)registAPIForJS
{
    // 测试原生方法
    [self.bridge registerHandler:@"testNativeFunc" handler:^(id data, WVJBResponseCallback responseCallback) {
        //可以这样获取参数
        NSString *str = data[@"key值"];
       
       //可以做一些自己的事情
    }];
}
			

捕获url scheme并执行方法的代码

//关键是这句代码
[self.bridge setWebViewDelegate:self];
//然后再WebViewjava scriptBridge里就可以重新shouldStartLoadWithRequest来捕获url了
			
首页 上一页 5 6 7 8 下一页 尾页 8/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇全球首个实战类微信小程序开发教程 下一篇微信小程序组件scroll-view

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目