簡(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>