1.先pod进去dsBridge
pod “dsBridge”
2.然后官网给我解析就是开始创建一个JsApiTest类,但是没有说明这个类是干什么的,其实这个类中的方法都是js调用oc的方法。
#import "JsApiTest.h"
#import "dsbridge.h"
@implementation JsApiTest
// 同步
- (NSString *)testSyn: (NSString *) msg
{
return [msg stringByAppendingString:@"[ syn call]"];
}
// 异步
- (void)testAsyn:(NSString *) msg :(JSCallback) completionHandler
{
completionHandler([msg stringByAppendingString:@" [ asyn call]"],YES);
}
@end
3.然后开始在项目中创建wkwebview
DWKWebView * dwebview=[[DWKWebView alloc] initWithFrame:CGRectMake(0, 0, kScreenW, kScreenH-kIPHONEXNAVHEIGHT)];
NSString *urlStr = @“”;
NSMutableURLRequest *dealRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlStr]
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:15.0];
[dwebview loadRequest:dealRequest];
// [dwebview addJavascriptObject:[[JsApiTest alloc] init] namespace:nil];
[dwebview addJavascriptObject:self namespace:nil];
[self.view addSubview:dwebview];
[dwebview setDebugMode:true];
这里要说明的的如果你使用[dwebview addJavascriptObject:[[JsApiTest alloc] init] namespace:nil]这句来初始化DWKWebView的话,js调用你原生的方法都要写到你自己定义JsApiTest类中。如果你使用[dwebview addJavascriptObject:self namespace:nil];来初始化,那么你就不必要在创建JsApiTest类了,js调用你原生的回调方法直接在你的项目中当成直接的方法使用就行。
js调用原生方法以及注释
//testSyn是js调用原生的方法名称,msg是js给你传递的参数需要注意的是msg的类型不仅是NSString类型的,你可以改成自己需要的任何类型,msg参数你也可以自己定义成任何名字 同步异步方法都是这样
- (NSString *)testSyn: (NSString *) msg;
原生调用js方法
[dwebview callHandler:@"addValue" arguments:@[@"12",@"3"] completionHandler:^(NSNumber* value){
DLog(@"oc调用js回调%@",value);
}];
作者:ly410726
来源:CSDN
原文:https://blog.csdn.net/ly410726/article/details/83274926