Code Monkey home page Code Monkey logo

data-bus-ios's Introduction

次のインタフェース及び実装を提供します。

class description
CBBDataBus iOSアプリ(Objective-c/swift)で利用できるDataBus基本クラス
CBBWebViewDataBus ネイティブコード と WebView(JavaScript) 間で利用できるDataBus
CBBMemoryQueue 同一プロセス内での通信機構
CBBMemoryQueueDataBus CBBMemoryQueue を用いたDataBus
CBBMultiplexDataBus DataBusを多重化

Example

本リポジトリの Example, Example-swift ディレクトリが, WKWebView(HTML/JavaScript) と ネイティブコード間の DataBus (CBBWKWebViewDataBus) で通信をする簡単なサンプル・プロジェクトになっています。

screen-shot

Exampleをビルドして動作させる場合, 事前に pod install を実行してください。

cd Example
pod install
open Example.xcworkspace

または

cd Example-swift
pod install
open Example-swift.xcworkspace

Setup

Podfile

abstract_target 'defaults' do
    pod 'CBBDataBus', '~2.1.6'
end

Usage

WebViewDataBusの基礎的な使用方法を示します。

step 1: WKWebView + DataBus を準備 (ネイティブコード)

  • WKWebViewWebコンテンツのloadを行う前CBBWebViewDataBus インスタンスを作成する必要があります
  • CBBWebViewDataBus は, Webコンテンツ側でDataBusを使用するためのJavaScriptコードをインジェクトします
    WKWebView webView = [[WKWebView alloc] init];
    CBBWKWebViewDataBus* dataBus = [[CBBWKWebViewDataBus alloc] initWithWKWebView:webView];
    [webView loadRequest:request];

注意点: 1つの WKWebView に対して作ることができる CBBWKWebViewDataBus のインスタンスは1つだけです。 複数のDataBusを利用したい場合は, CBBMultiplexDataBus を用いて多重化してください。

step 2: JavaScript側からsendされたデータをハンドリング (ネイティブコード)

    [dataBus addHandler:^(NSArray * _Nonnull data) {
        // 受信したdataを処理する
    } forName:@"data-bus-name"];

追加したハンドラは CBBDataBus#removeHandler または CBBDataBus#removeAllHandlers で削除できます。

step 3: JavaScript側へデータをsend (ネイティブコード)

CBBDataBus#sendDataNSArray 形式のデータを JavaScript側へ送信できます。

    [_dataBus sendData:@[@"This", @"is", @"test", @(1234)]];

step 4: DataBusを準備 (JavaScript)

次のコードでJavaScript側でDataBusのインスタンスを生成できます。

var dataBus = new CBB.WebViewDataBus();

step 5: ネイティブコード側からsendされたデータをハンドリング (JavaScript)

DataBus#addHandler で function を追加することで, ネイティブコード側がsendしたデータをハンドリングできます。

    dataBus.addHandler(function() {
        var data = arguments.join(',');
        console.log("received data from native: " + data);
    });

step 6: ネイティブコード側へデータをsend (JavaScript)

DataBus#send でデータをネイティブコード側へ送信できます。

    dataBus.send(1, "arg2", {"arg3": 3});

step 7: 破棄

(JavaScript)

DataBus#destroy で破棄することができます。

    dataBus.destroy();
(ネイティブコード)

DataBus#destroy で破棄することができます。

    dataBus.destroy();

License

data-bus-ios's People

Contributors

kentdotn avatar saiten avatar suzukiplan avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

kentdotn econa77

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.