微信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);
            }
        }
    });
}
posted @ 2015-09-01 16:02  沉默的天蝎  阅读(468)  评论(0)    收藏  举报