DSBridge是比较好用的原生与JS交互跨平台的jsbridge,支持iOS、安卓。
git地址:
https://github.com/wendux/DSBridge-IOS
https://github.com/wendux/DSBridge-Android
iOS端用法简介
- pod安装
pod "dsBridge"
- 使用
1、Implement APIs in a class
//JsApiTest.m
@implementation JsApiTest
//for synchronous invocation
- (NSString *)testSyn:(NSDictionary *)args
{
return [(NSString *)[args valueForKey:@"msg"] stringByAppendingString:@"[ syn call]"];
}
//for asynchronous invocation
- (NSString *)testAsyn:(NSDictionary *)args result:(JSCallback)completionHandler
{
completionHandler(@"asyn call", YES);
}
@end
创建JsApiTest类,只要在.m中实现与JS端协商好的方法即可,不需要在.h中声明。如
- (NSString *)testSyn:(NSDictionary *)args
2、add API object to DWKWebView
DWKWebView *dwebview = [[DWKWebView alloc] initWithFrame:bounds];
// register api object without namespace
[dwebview addJavascriptObject:[[JsApiTest alloc] init] namespace:nil];
namespace要与JS协商决定。
需要注意的地方 !!
JS端有弹框(alert/confirm/prompt)等,DSBridge中已经实现了WKUIDelegate代理方法中的代理,默认对话框标签文本语言为中文,您可以通过调用来自定义文本customJavascriptDialogLabelTitles。如果您仍然想自己实现它们,请设置作为DSUIDelegate 的代理的属性WKUIDelegate。
网友评论