微信JSSDK使用时应注意的地方
JSSDK的具体使用请参考http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
1.为了禁止用户分享某页面,我们会使用JSSDK的接口隐藏右上角的菜单项,需要注意的是如果在一个页面中将菜单隐藏的话,当再跳到另外一个页面且该页面并未设置菜单隐藏,这时菜单还是隐藏的,如果要使用菜单的接口则需要调用相应的接口来设置菜单显示。
2.使用扫描接口时如果不是微信而是php生成的二维码,(参照:http://phpqrcode.sourceforge.net/index.php), 对于Android机和ios机返回的结果是不一样的,具体处理的代码如下:
wx.scanQRCode({ needResult: 1, scanType: ["qrCode","barCode"], success: function (res) { var result = res.resultStr; if (typeof(JSON.parse(result)) == 'object') { // Only for iphone result = JSON.parse(result); str = result.scan_code.scan_result; } else { str = result; } } });
3.选择图片接口
wx.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 } });
可以设置图片的来源、原图或是缩略图以及图片的张数。
4.配置信息
wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录1 jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); signature的生成请参考文档的详细介绍
5.通过ready接口处理成功验证
wx.ready(function(){ // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 });
6.选择图片接口完成后根据返回的localIds可以调用uploadImage接口循环上传图片至微信服务器,但是应该注意以下写法在Android中可以上传多张但是在ios中只能上传一张。
localIds.forEach(function(localId, index) { wx.uploadImage({ localId: localId, isShowProgressTips: 1, success: function (res) { serverId = res.serverId; // return the serverId of the image getImageFromServer(serverId, index, totalCount); } }); });
如果要修复此问题,代码应改写成如下:
wx.chooseImage({ success: function (res) { localIds = res.localIds; var i = 0; uploadImage(i); } }); function uploadImage(i) { wx.uploadImage({ localId: localIds[i], isShowProgressTips: 1, success: function (res) { serverId = res.serverId; // return the serverId of the image getImageFromServer(serverId, i, localIds.length); i++; if (i < localIds.length) { uploadImage(i); } } }); }

浙公网安备 33010602011771号