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"] = @""; //第二层
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];
iOS 调H5方法不执行没反应的坑的更多相关文章
- 浅谈iOS开发中方法延迟执行的几种方式
Method1. performSelector方法 Method2. NSTimer定时器 Method3. NSThread线程的sleep Method4. GCD 公用延迟执行方法 - (vo ...
- iOS开发中方法延迟执行的几种方式
概述 项目开发中经常会用到方法的延时调用,下面列举常用的几种实现方式: 1.performSelector 2.NSTimer 3.NSThread线程的sleep 4.GCD 1.performSe ...
- ios之申请后台延时执行和做一个假后台的方法(系统进入长时间后台后,再进入前台部分功能不能实现)
转自:http://sis hu ok.com/forum/blogCategory/showByCategory.html?categories_id=138&user_id=10385 ...
- ios之申请后台延时执行和做一个假后台的方法
转自:http://sis hu ok.com/forum/blogCategory/showByCategory.html?categories_id=138&user_id=10385 ...
- ios 上浏览器返回上一页不会刷新页面问题,页面初始化的方法不执行
https://blog.csdn.net/yang450712123/article/details/79276102 https://blog.csdn.net/Chengbin_Huang/ar ...
- jquery下的提交,点击按钮没反应,post方法不执行 JSON方式在FORM表单下不起作用
jquery下的提交,点击按钮没反应,post方法不执行 JSON方式在FORM表单下不起作用
- H5 Canvas | 画布中变量作用域与setInterval方法同步执行探究
Demo - 随机绘制圆环 实现思路: 将一个圆环的绘制分成100份,setInterval()方法定义每隔时间n绘制一段新的,每份的开始路径都是上一次的结束路径,实现步进绘制. 通过Math.ran ...
- iOS与H5交互
H5与App原生交互,一般会是前端页面中的JavaScript与App使用的原生开发语言的交互.技术方案应能达到以下要求: 在js与原生进行交互的时候能保证正常的正向调用逻辑返回,反向可以处理异步回调 ...
- WebViewJavascriptBridge详细使用 iOS与H5交互的方案
WebViewJavascriptBridge详细使用 源网址: https://www.cnblogs.com/jiang-xiao-yan/p/5345755.html 前言 WebView ...
随机推荐
- 【BZOJ2738】矩阵乘法 [整体二分][树状数组]
矩阵乘法 Time Limit: 20 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description 给你一个N*N的矩阵,不用算矩阵乘 ...
- [目前未找到题目]扩展KMP模板
procedure build_next; begin lena:=length(a);lenb:=length(b); next[]:=lenb;next[]:=lenb-; to lenb- ] ...
- [转载]解决clickonce不支持administer权限问题
转自ClickOnce deployment vs. requestedExecutionLevel = requireAdministrator ClickOnce方式部署应用简单方便,估计很多人都 ...
- 河南省第十届省赛 Intelligent Parking Building
title: Intelligent Parking Building 河南省第十届省赛 tags: [模拟,省赛] 题目描述: There is a new revolution in the pa ...
- autoKeras入门
测试本地mnist数据集 图片只用500张,450张做train与50张test, 代码如下: # conding:utf-8 import os os.environ[' import numpy ...
- bzoj1008 矩乘递推
2013-11-17 10:38 原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1008 比较水的题,直接矩阵乘法+递推就OK了 w[i,0 ...
- Python学习笔记 - day3 - 数据类型及运算符
Python的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...
- python 复习 4-1 函数、参数、返回值、递归
函数 完成特定功能的一个语句组,这个语句组可以作为一个单位使用,并且给它组语句取一个名子,即函数名 可以通过函数名在程序不同地方多次执行,即函数调用 预定义函数(可以直接使用) 自定义函数(自编写的) ...
- PHPExcel 长数字串显示为科学计数 与 其他错误
一.解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号 ...
- C# WinForm窗体界面设置
设置方法: 一:Form对象 属性: 设计中的Name:窗体类的类名AcceptButton:窗口的确定按钮CancelButton:窗口按ESC的取消按钮 1.外观 Backcolor:背景颜色Fo ...