FMWebViewJavascriptBridge 受 react native 启发,是一个轻量级的 JavascriptBridge,仅支持 iOS 8.0 及之后的 WKWebView,与 android 原生调用保持一致。
@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"});
}
使用 FMWKWebViewBridge 类的接口 addJavascriptInterface 将接口添加到 JavaScript 层
_webViewBridge = [FMWKWebViewBridge wkwebViewBridge:self.webView];
[_webViewBridge addJavascriptInterface:[JavascriptInterface new] withName:@"JavascripInterface"];
与 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 文件。