ios-学习 dsbridge oc使用(转)

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

你可能感兴趣的:(iOS学习)