前几天又搞了一个微信小项目,来把,还是来记录一下,作为一个历程,总结还是要的,万一有同学需要呢!
微信版本判断
当然了,现在土豪都比较多,都是Iphone大大的有,都会自动更新软件,但是还是有很多的安卓用户或者未开启自动更新的,微信新开放的JSSDK只支持6.0.1以上的,所以对于低版本的用户我们还是要提醒一下啊。
在网上查了一下 ,下面是个比较好的判断方法:
JavaScript
var 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中修复)。
javascript
wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的唯一标识,个人设置中获得 timestamp: , // 必填,生成签名的时间戳,个人设置中获得 nonceStr: '', // 必填,生成签名的随机串,个人设置中获得 signature: '',// 必填,签名,见附录1 jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });
步骤四:通过ready接口处理成功验证
javascript
wx.ready(function(){ // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 });
接口调用说明
所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:
success:接口调用成功时执行的回调函数。
fail:接口调用失败时执行的回调函数。
complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
遇到的一些坑
- 都放在wx.ready(function(){})里面去执行。不然你会遇到分享中的设置无效的问题
- 微信有个uploadImage接口,用于上传图片到微信服务器的,但是有时候在安卓下你会发现选择图片以后怎么都没有反应的情况,这时候,不妨试试用setTimeout()来包裹这个函数。可能你就会解决掉你的问题。感谢segmentfault,感谢@Dali,我当时被这个问题纠结了好久好久。。。
-
温习了一下生成指定范围随机数
window.ranNum = parseInt(Math.random() * (max - min + 1) - min, 10);
-
温习了一下图片转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,蛮实用的!
个人原创,转载请注明
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。