提供以下接口和实现。
类 | 描述 |
---|---|
CBBDataBus |
iOS应用(Objective-c/swift)中可用的DataBus基本类 |
CBBWebViewDataBus |
可用于原生代码和WebView(JavaScript)之间的DataBus |
CBBMemoryQueue |
同一进程内的通信机制 |
CBBMemoryQueueDataBus |
使用CBBMemoryQueue 的DataBus |
CBBMultiplexDataBus |
多重化DataBus |
本存储库中的Example,Example-swift目录包含了使用WKWebView(HTML/JavaScript)和原生代码之间的简单样本项目,采用DataBus(CBBWKWebViewDataBus)通信。
若要编译并运行示例,请先执行pod install
。
cd Example
pod install
open Example.xcworkspace
或者
cd Example-swift
pod install
open Example-swift.xcworkspace
abstract_target 'defaults' do
pod 'CBBDataBus', '~2.1.6'
end
以下展示WebViewDataBus的基本使用方法。
WKWebView
加载Web内容之前需要创建CBBWebViewDataBus
实例CBBWebViewDataBus
将为Web内容注入用于在JavaScript端使用DataBus的JavaScript代码 WKWebView webView = [[WKWebView alloc] init];
CBBWKWebViewDataBus* dataBus = [[CBBWKWebViewDataBus alloc] initWithWKWebView:webView];
[webView loadRequest:request];
注意事项:对于单个
WKWebView
,可以创建一个CBBWKWebViewDataBus
实例。如果需要使用多个DataBus,请使用CBBMultiplexDataBus
进行多重化。
[dataBus addHandler:^(NSArray * _Nonnull data) {
// 受信したdataを処理する
} forName:@"data-bus-name"];
可以添加的处理器可以通过
CBBDataBus#removeHandler
或CBBDataBus#removeAllHandlers
删除。
使用CBBDataBus#sendData
可以将NSArray
格式的数据发送到JavaScript端。
[_dataBus sendData:@[@"This", @"is", @"test", @(1234)]];
以下代码显示了如何在JavaScript端生成DataBus实例。
var dataBus = new CBB.WebViewDataBus();
DataBus#addHandler
通过添加函数来处理原生代码发送的数据。
dataBus.addHandler(function() {
var data = arguments.join(',');
console.log("received data from native: " + data);
});
使用 DataBus#send
可以将数据发送到原生代码。
dataBus.send(1, "arg2", {"arg3": 3});
通过 DataBus#destroy
进行废弃。
dataBus.destroy();
通过 DataBus#destroy
进行废弃。
dataBus.destroy();