3

前几天又搞了一个微信小项目,来把,还是来记录一下,作为一个历程,总结还是要的,万一有同学需要呢!

微信版本判断

当然了,现在土豪都比较多,都是Iphone大大的有,都会自动更新软件,但是还是有很多的安卓用户或者未开启自动更新的,微信新开放的JSSDK只支持6.0.1以上的,所以对于低版本的用户我们还是要提醒一下啊。

在网上查了一下 ,下面是个比较好的判断方法:

JavaScriptvar wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i) ;  
if( !wechatInfo ) {  
    alert("本活动仅支持微信");  
} else if ( wechatInfo[1] < "6.0" ) {  
    alert("本活动仅支持微信6.0以上版本");
}  

微信开发的步骤

首先微信有各种号,什么订阅号,公众号,认证号。乱七八糟的,我也不搞不清楚具体区别,反正认证号要花300大洋去认证,这点我倒是记得蛮熟。。。首先你要有个号,然后你要去填一下服务器地址。详情见 微信开发者文档

步骤一:绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

备注:登录后可在“开发者中心”查看对应的接口权限。

步骤二:引入JS文件

在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js

备注:支持使用 AMD/CMD 标准模块加载方法加载

步骤三:通过config接口注入权限验证配置

所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。

javascriptwx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,公众号的唯一标识,个人设置中获得
    timestamp: , // 必填,生成签名的时间戳,个人设置中获得
    nonceStr: '', // 必填,生成签名的随机串,个人设置中获得
    signature: '',// 必填,签名,见附录1
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});

步骤四:通过ready接口处理成功验证

javascriptwx.ready(function(){

    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

接口调用说明

所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:

success:接口调用成功时执行的回调函数。
fail:接口调用失败时执行的回调函数。
complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。

遇到的一些坑

  1. 都放在wx.ready(function(){})里面去执行。不然你会遇到分享中的设置无效的问题
  2. 微信有个uploadImage接口,用于上传图片到微信服务器的,但是有时候在安卓下你会发现选择图片以后怎么都没有反应的情况,这时候,不妨试试用setTimeout()来包裹这个函数。可能你就会解决掉你的问题。感谢segmentfault,感谢@Dali,我当时被这个问题纠结了好久好久。。。
  3. 温习了一下生成指定范围随机数

    window.ranNum = parseInt(Math.random() * (max - min + 1) - min, 10);
    
  4. 温习了一下图片转base编码

    html<!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>htdocs</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="renderer" content="webkit">
        <meta name="keywords" content=""/>
        <meta name="description" content="hockor"/>
    </head>
    <body>
    <img id="he" src="logo.png" alt=""/>
    <input type="button" value="yes" id="go">
    <div></div>
    <img id="hehe" src="" alt=""/>
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
    <script>
        "use strict";
        function img2code(url, callback) {
            var img = new Image();
            img.src = url;
            var cvs = document.createElement("canvas");
            cvs.width = img.width;
            cvs.height = img.height;
            var ctx = cvs.getContext("2d");
            img.crossOrigin = "Anonymous";
                ctx.drawImage(img, 0, 0);
                window.imgData = cvs.toDataURL();
                callback(imgData)
        }
        $("#go").click(function(){
            img2code($("#he").attr("src"), function (imgData) {
                imgData = imgData.substr(22);
                $("div").html(imgData)
                $("#hehe").attr("src","data:image/png;base64,"+imgData)
            })
        })
    </script>
    </body>
    </html>
    

另外在学习中也可以参考一下微信的demohttp://demo.open.weixin.qq.com/jssdk,蛮实用的!

个人原创,转载请注明


Hockor
647 声望38 粉丝

hey man。I'm Hockor!


引用和评论

0 条评论