OCTWebViewBridge 2.1.0

OCTWebViewBridge 2.1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2018年11月

octree维护。



OCTWebViewBridge

起源于之前在老公司工作时创建的库YJWebView

在 WKWebView 中使用 Javascript 调用原生代码,支持将函数作为参数传递。

window.native.foo(param1, param2, (obj) => {

})

安装

pod 'OCTWebViewBridge'

如何使用

自定义插件

javascript 文件(log.js)

window.bridge.log = function(msg) {

window.bridge.invoke("me.octree.bridge.log", "log:", msg)
}

objective-c 代码

@interface OCTLogPlugin : NSObject <OCTWebViewPlugin>

@property (copy, nonatomic, readonly) NSString *identifier;
@property (copy, nonatomic, readonly) NSString *javascriptCode;

@end


@implementation OCTLogPlugin

- (NSString *)identifier {
    
    return @"me.octree.bridge.log";
}

- (NSString *)javascriptCode {
    
    NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:@"log" ofType:@"js"];
    return [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
}


- (void)log:(id)msg {

    NSLog(@"WebView Bridge: %@", [msg description]);
}

@end

注入插件

[[OCTWebViewPluginInjector injectorForWebView:webView] injectPlugin:[[OCTLogPlugin alloc] init]];

javascript 调用原生代码

window.bridge.log("yoooooooo man")

区块插件

区块插件以区块的形式为 Web 提供插件功能。Web 调用时,将执行该区块

[[OCTWebViewPluginInjector injectorForWebView:_webView] injectPluginWithFunctionName:@"test" handler:^(NSDictionary *data) { 
    NSLog(@"%@", data);
}];

[[OCTWebViewPluginInjector injectorForWebView:_webView] injectPluginWithFunctionName:@"test2" handlerWithResponseBlock:^(NSDictionary *data, OCTResponseCallback responseCallback) {
   NSLog(@"test2: %@", data);
   responseCallback(@{ @"hello" : @"world" });
}];

在 Web 中调用

window.bridge.plugin.test({'hello': 'world'})
window.bridge.plugin.test2({'hello': 'world'}, function(json) {
  window.bridge.log(JSON.stringify(json))
})

CSS 注入器

注入 CSS 代码

// inject css
[[OCTWebViewPluginInjector injectorForWebView:_webView] injectCSSString:@"body {background-color: #eeeeee;}" forIdentifier:@"test"];
// remove css
[[OCTWebViewPluginInjector injectorForWebView:_webView] removeCSSStringForIdentifier:@"test"];

夜间模式

开启网页夜间模式

// enable night mode
[self.webView oct_nightFall];

// disable night mode
[self.webView oct_sunrise];

许可证

OCTWebViewBridge 采用 MIT 许可证发布。详情请见 LICENSE。