DataChannel の iOS用の実装を提供します。
本リポジトリの Example, Example-swift ディレクトリが, WKWebView(HTML) と ネイティブコード(Objective-c) 間の DataChannel で通信をする簡単なサンプル・プロジェクトになっています。
- Objective-c: ViewController.m
- Swift: ViewController.swift
- HTML: index.html, script.js, data-channel.js
Exampleをビルドして動作させる場合, 事前に pod install
を実行してください。
cd Example
pod install
open Example.xcworkspace
または
cd Example-swift
pod install
open Example-swift.xcworkspace
abstract_target 'defaults' do
pod 'CBBDataChannel', '2.0.5'
end
使用するCBBDataBusインスタンスを指定してCBBDataChannelを生成します。
CBBDataChannel* dataChannel = [[CBBDataChannel alloc] initWithDataBus:dataBus];
CBBDataChannel#addHandler
で受信データの受け口となるハンドラを追加します- REQUESTを受信した場合は
callback
が設定されているため, それを呼び出して応答を返信する必要があります
[dataChannel addHandler:^(id _Nullable packet, CBBDataChannelResponseCallback _Nullable callback) {
if (callback) {
// REQUEST (双方向データ) を受信時の処理
// 最後に処理結果を応答する必要がある
callback(@"response-data");
} else {
// PUSH (単方向データ) を受信時の処理
}
}];
追加したハンドラは
CBBDataChannel#removeHandler
またはCBBDataChannel#removeAllHandlers
で削除することができます。
CBBDataChannel#sendPush
でPUSH (単方向データ) を送信することができます
[dataChannel sendPush:@["push-data"]];
CBBDataChannel#sendRequest
でREQUEST (双方向データ) を送信することができます
[dataChannel sendRequest:@["request-data"] callback:^(NSError * _Nullable error, id _Nullable packet) {
// 応答を受信時の処理
}];
CBBDataChannel#destroy
で破棄できます。
[dataChannel destroy];
DataChannelをdestroyしても下位層(DataBus)のdestroyは行われません。
- Source code, Documents: MIT
- Image files: CC BY 2.1 JP