iOS 輕量級(jí)JSBridge

簡(jiǎn)介

FMWebViewJavascriptBridge inspired by react native 是一個(gè)輕量級(jí)的H5 與Native 通信框架,只支持WKWebView iOS 8.0之后。

image

How to Use

自定義 JavascriptInterface

  • 自定義 JavascriptInterface 類
  • 在暴露的接口前添加FM_EXPORT_METHOD宏
  • 支持的參數(shù)可以是 nil NSNull NSString NSNumber NSDictionary NSArray NSDate char int double BOOL
  • 同時(shí)支持返回值給Javascrip的回調(diào), 回調(diào)的類型FMCallBack,支持參數(shù)同上

@implementation JavascriptInterface

FM_EXPORT_METHOD(@selector(push:))
- (void)push:(NSUInteger)one {
  [self.viewController.navigationController
      pushViewController:[WKViewController new]
                animated:YES];
  NSLog(@"test push%ld", (unsigned long)one);
}

FM_EXPORT_METHOD(@selector(pop:))
- (void)pop:(NSString *)testArray {
  [self.viewController.navigationController popViewControllerAnimated:YES];
  NSLog(@"pop array %@", testArray);
}

FM_EXPORT_METHOD(@selector(setNavTitle:response:))
- (void)setNavTitle:(NSDictionary *)userInfo response:(FMCallBack)callBack {
  self.viewController.title = userInfo[@"name"];
  callBack(@{@"name":@"carlSQ",@"age":@"26"});
}

添加接口給javascript調(diào)用

用 FMWKWebViewBridge 類中的接口addJavascriptInterface 添加接口道javascrip層

_webViewBridge = [FMWKWebViewBridge wkwebViewBridge:self.webView];
[_webViewBridge addJavascriptInterface:[JavascriptInterface new] withName:@"JavascriptInterface"];

js層調(diào)用

FM_Require 中的名字是 addJavascriptInterface 中設(shè)置的名字


<script>

var javascriptInterface = FM_Require('JavascriptInterface')

javascriptInterface.setNavTitle({"name" : "carl", age:"18"},function(responseData) {
                                     setNavTitle.innerHTML = "name:"+responseData.name +"  age:" + responseData.age;
                                     })

</script>

總結(jié)

歡迎PR

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • iOS網(wǎng)絡(luò)架構(gòu)討論梳理整理中。。。 其實(shí)如果沒(méi)有APIManager這一層是沒(méi)法使用delegate的,畢竟多個(gè)單...
    yhtang閱讀 5,251評(píng)論 1 23
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,142評(píng)論 25 708
  • github排名https://github.com/trending,github搜索:https://gith...
    小米君的demo閱讀 4,801評(píng)論 2 38
  • 今天聽(tīng)了hebe的一首《愛(ài)》,里面的一段歌詞很扎心,"我愛(ài)你,你愛(ài)她,她愛(ài)她,她愛(ài)他;你愛(ài)我,我愛(ài)他,他愛(ài)他,他愛(ài)...
    大蕎麥君閱讀 738評(píng)論 0 0
  • 用慧眼看世界,不如用慧眼看自己,你是誰(shuí),你要成為誰(shuí),把真實(shí)的自己找到,把外界強(qiáng)加給你的部分舍棄,我不好不壞,不是閃...
    關(guān)中刀客閱讀 181評(píng)論 0 0