調用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];