FMWebViewJavascriptBridge 3.0.1

FMWebViewJavascriptBridge 3.0.1

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布最后发布2017年3月

carlcarlSQ维护。



  • 作者
  • carl shen

简介

FMWebViewJavascriptBridge 受 react native 启发,是一个轻量级的 JavascriptBridge,仅支持 iOS 8.0 及之后的 WKWebView,与 android 原生调用保持一致。

如何使用

自定义 JavascriptInterface

  • 自定义 JavascriptInterface 类
  • 在暴露的接口前添加 FM_EXPORT_METHOD 宏
  • 支持的参数可以是 nil NSNull NSString NSNumber NSDictionary NSArray NSDate char int double BOOL
  • 同时支持向 JavaScript 返回回调值,回调类型为 FMCallBack,支持参数同上
@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 调用

使用 FMWKWebViewBridge 类的接口 addJavascriptInterface 将接口添加到 JavaScript 层

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

JavaScript 层数调用

与 android 原生调用保持一致,addJavascriptInterface 会在 JavaScript 层注入一个对象,名字是 addJavascriptInterface 中设置的名字


<script>

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

</script>

用法

pod 'FMWebViewJavascriptBridge', '~> 3.0.0'

作者

carl Shen

许可

FMWebViewJavascriptBridge 可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。