zoukankan      html  css  js  c++  java
  • iOS 调H5方法不执行没反应的坑

    调用H5的方法需要给H5传一些参数,参数中包括图片的base64字符串。

    错误一:

    图片转base64,后面参数不能随便写,正确做法如下

    NSData *imageData = UIImageJPEGRepresentation(img,0.1);
        NSString *strImgBase64 = [imageData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

    把NSDataBase64EncodingEndLineWithLineFeed换成枚举中的其他值转成的base64,然后拼到json字符串中时,校验根本不通过,所以调H5没反应。

    错误二:

    把参数拼成json字符串时,字典转json字符串作为参数调H5根本没反应

    //第一层
        NSMutableDictionary *mDicBack = [NSMutableDictionary new];
        mDicBack[@"msg"] = @"success";
        mDicBack[@"code"] = @"0";
        
        //第二层
        NSMutableDictionary *mDic2 = [NSMutableDictionary new];
        mDic2[@"fromserver"] = dic;
        mDic2[@"base64"] = [NSString stringWithFormat:@"data:image/jpg;base64,%@",strImgBase64];
        
        mDicBack[@"data"] = mDic2;
        
      //字典转json字符串
    if ([NSJSONSerialization isValidJSONObject:mDicBack]) { NSData * jsonData = [NSJSONSerialization dataWithJSONObject:mDicBack options:NSJSONWritingPrettyPrinted error:nil]; jsonStr = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]; } NSString *backJson = [NSString stringWithFormat:@"callBack('%@')", jsonStr]; [self.h5View stringByEvaluatingJavaScriptFromString:backJson];

    只能换下面手工拼接方法才行。

    jsonStr = [NSString stringWithFormat:@"{"msg":"success","code":"0","data":{"fromserver":{"result":%@,"message":"%@","path":"%@","serverpath":"\%@"},"base64":"data:image/png;base64,%@"}}",dic[@"result"],dic[@"message"],dic[@"path"],dic[@"serverpath"],strImgBase64];
  • 相关阅读:
    转 闭包简单理解
    mac 利用 sshpass 自动登录
    阮一峰 IaaS,PaaS,SaaS 的区别
    YMP运行初始化步骤
    强烈推荐 在线接口文档管理工具 小幺鸡 小团队可以省掉测试了
    springboot JSP 404
    并发测试 JavaDemo
    JS刷新当前页面的几种方法总结
    jquery checkbox勾选/取消勾选只能操作一次的诡异问题
    微信网页 第三方登录原理详解(转)
  • 原文地址:https://www.cnblogs.com/zhanglinfeng/p/6006734.html
Copyright © 2011-2022 走看看