您的位置:首页 > 移动开发 > 微信开发

微信开发心得

2016-04-21 00:00 555 查看

构建一套SDK

微信开发本质就是调用微信API。微信API是持续更新的,有时候新增,有时候修改。所以开发者免不了也要更新自己的代码。为了集中处理对微信API的请求,开发一套SDK是比较好的选择。

SDK,就意味着与外部应用代码没有耦合关系,自成一个依赖岛。封装SDK的好处显而易见:

集中处理请求的方式。

集中处理返回值和错误码。

复用请求凭证(access_token)。

我封装的微信SDK:https://github.com/liuxd/WeChatSDK

回调服务器

开发者不仅要请求微信API,还要接收来自微信的反馈信息推送。有以下特点:

统一为XML格式字符串。微信服务器推送来的消息和开发者返回给微信服务器的消息都是XML格式。__如果不需要返回信息,请务必返回空字符串。__否则会报“返回值不合法”的错误。

微信推送来的信息包含多种类型。包括:用户消息,事件消息等。可以根据业务需要选择性处理。

压力较大。微信推送的消息类型较多,其中用户消息和地理位置上报算比较频繁的,所以响应的服务器要具备较好的负载能力。

access_token的封装

绝大多数微信API都需要使用__access_token__,所以__access_token__的维护是非常重要的。

统一来源。access_token__具有排他性,如果已经有了一个__access_token__了还要请求申请__access_token__的接口的话,则原来的__access_token__就失效了。这在多系统都需要__access_token__的情况下非常严重。所以要统一__access_token__来源,建议所有子系统都访问同一个接口来获得__access_token

做好缓存。__access_token__有有效期,且申请__access_token__的接口有访问次数限制,所以缓存是必须的。然而官方给出的缓存过期时间是有问题的,建议本地缓存的有效时间在官方有效时间的基础上减少200秒。

正式号与测试号。每个正式公众号都配备了一个测试号,也只有一个测试号。实际开发中可能多个部门在使用测试号,这可能导致__access_token__互相覆盖的问题。建议对测试号的__access_token__也做统一封装。

网页授权

开发获得code的辅助工具。网页授权的流程比较复杂,且需要https的域名,所以为测试号搭建环境很不划算,不推荐为测试号搭建网页授权的环境。但是实际使用中可能需要真实的code来做测试,那么就需要一个高效的方法获得没有使用的有效code。建议开发一个辅助页面,显示网页授权链接的二维码,这样就可以比较方便的获得有效code。

代理域名。实际开发中可能有多个域名需要使用网页授权功能,但是微信后台只支持配置一个安全域名,这怎么办呢?好办,你实际需要的只是那个code而已,建议在配置的安全域名上开发一个中转程序,根据参数将code分发到指定URL上即可。

短URL处理。授权链接都很长,而且里面包含了APPID。既不方便使用,也不该直接使用。建议开发一个中转程序,根据参数构建真实的URL。这样的好处很多:

统一管控。方便记录日志,进行统计。

链接较短。相比原始URL,新的URL要精简很多。

用户地理位置更新

用户信息里的所在地信息是有问题。有两个原因:

早期微信的地理位置不规范,是可以手动输入的。现在仍然遗留了很多脏数据。

用户所在位置是可以用户自己选择的。有些用户出于各种心理而故意选择了一个不真实的地区。

然而很多时候我们需要用户的真实地理信息,这时候上报地理信息的接口就有用处了。我是这么用的:

用户经纬度请求腾讯地图API 文档地址,获得所在地信息后更新用户数据。

每个经纬度的返回值都进行缓存,可以一定程度上减少请求腾讯地图API的次数。

用户每天只更新一次地理信息。一方面是因为没必要太频繁更新,另一方面用户地理信息是每5秒上报一次,如果每次都更新对服务器的压力太大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: