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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM