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);
        
    }];


    
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值