OC和JS交互、JS和OC交互

现在做开发 很多会出现交互问题  我在公司项目中也会用到交互  下面我大致写下 交互的代码

- (void)loadWeb{

//1..加载H5地址

//加载地址

NSString *str = @"H5传过来的地址";

NSURLRequest *reUrl = [NSURLRequest requestWithURL:[NSURL URLWithString:str]];

[self.webView loadRequest:reUrl];

///主要 这里是直接传地址给H5 属于get方法传输 但是有参数长度限制  也有post传输 不限制参数长度  这里不另外写 很简单  也是几行代码的事情

//2..JS调用OC   其实就是客户端传给H5页面的地址  这里也要约定字段

NSString *string = [NSString stringWithFormat:@"?约定字段={\"参数名\":\"参数内容\"}"];

string = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSString *strURL = [NSString stringWithFormat:@"%@%@",str,string];

NSURL *cateUrl = [NSURL URLWithString:strURL];

NSURLRequest *request = [NSURLRequest requestWithURL:cateUrl];

[self.webView loadRequest:request];

}


//进行JS交互

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

//和H5端约定的字段名

if([request.URL.absoluteString rangeOfString:@"约定字段"].location != NSNotFound){

NSString *jsonStr = [request.URL.absoluteString componentsSeparatedByString:@"约定字段"][1];

NSDictionary *jsonDict = [self dictionaryWithJsonString:jsonStr];

NSLog(@"从H5端获取的参数字典");

//与后台进行交互  上传服务器  这里是测试demo  假设传回来的字典参数都上传服务器

[self postToServer:jsonDict];

return NO;

}

return YES;

}

- (void)postToServer:(NSDictionary *)dict{

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager POST:@"后台接口地址" parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

if (responseObject) {

NSLog(@"上传成功");

}

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

NSLog(@"%@",error.description);

}];

}

你可能感兴趣的:(OC和JS交互、JS和OC交互)