准备工作
- 一个小程序账号
- 微信开发者工具(可以工具自带版本管理,也可以使用自己的代码管理)
- 平台接口需要有域名(有备案,注意安全证书)
需要注意的是:
一定一定一定要使用企业认证小程序,个人小程序无法满足各种开发需求(审核难,权限低,功能少)。
企业认证小程序:
- 申请小程序,进行主体认证。(需要一系列的公司信息)
- 如果有企业公众号,将小程序进行关联,即可复用公众号认证信息。
- 如果没有企业公众号,需要用公司的对公账户向腾讯公司打款来验证主体身份。打款信息在提交主体信息后可以查看到。通过微信认证验证主体身份,需支付300元认证费。认证通过前,小程序部分功能暂无法使用。
- 如果微信小程序需要用到支付功能,必须通过微信认证。
几个需要注意的点
-
模拟器效果不等于真机效果,开发时,一定要多使用真机调试功能!!!方便及早发现问题,定位问题。
容易出现的问题有模拟器显示正常,真机显示不正常(如按钮字超出范围等等),虽然在模拟器上适配了iPhone5,但是真机的字体会稍大一些,要及时进行调整。推荐使用神机(iPhone se)进行适配。会暴露出很多显示问题。
有时会发现在模拟器正常使用的方法,在真机上既没有报错,也没有结果。这时推荐在社区论坛进行相关api搜索,看是否有相关解决方案。再其次就是看官方文档,看是否有别的方法能够实现一样的效果。
提交审核时会对新的重要的
api
更新做出通知。要及时检查代码里面是否有使用,按照官方推荐的方法进行升级修改。一个微信小程序可以同时有两个版本,正式版本和体验版本(开发版本时效太短不考虑)。在项目中,正式版本为线上版本,为方便测试,体验版本可以设置为测试环境(需要给测试人员配置体验权限)。绑定域名时,需要把线上环境和测试环境域名都进行绑定。
技术点总结
微信小程序登陆逻辑
- 前端通过
wx.login()
获取code
- 平台通过
code
获取用户唯一的openId
- 平台通过
openId
在数据库查询对应的用户id
(和token
),返回给前端。(平台保存openId
和用户Id
的一一对应关系) - 后面的接口通过
userID
进行查询 -
token
刷新机制可以跟据具体情况制定。(可以前端自动刷新)
微信扫二维码跳转到小程序的指定页面:(参考示例:发票助手页面,发票二维码,扫描可跳转到发票详情页面)
需要在小程序开发进行相关配置。
将配置完成的
url
存在某二维码中,微信扫码就会直接跳转指定的小程序。如果想在
url
中存入参数,则可以在onLoad
中decodeURIComponent(options.q)
,可以拿到完整url
,再通过处理参数的函数就可以解析出参数了。-
微信针对于特殊情况的测试提供了特殊编译入口,方便测试。
小程序分享某个非首页的功能页面(参考示例:和家慧审发票分享)
需求:分享某个发票抬头页面,用户点击分享链接直达该发票页面。问题是直达页面后无法返回首页。
解决方案,直达页面改为首页,当拿到
id
时,则判断为需要跳转到发票详情页面,这样就解决了具体页面无返回首页按钮的问题。
小程序swiper
轮播组件问题(参考示例:和家慧餐首页轮播)
swiper
需要设置高度,无法随着子元素的高度变化。如果遇到轮播内容高度不一致,或者根据设备适配,导致高度不一致的情况,需要计算swiper
的当前高度。如果是图片的话可以结合bindload
进行图片高度的计算,然后动态的修改swiper
的高度。swiper
的高度超出了屏幕高度,会出现无法滚动的问题。此时需要借助<scroll-view scroll-y>
来完成页面的纵向滚动,在swiper
中间包一层,将swiper
高度固定,这样就可以正常滚动了。
小程序wxss
代码中使用calc
进行计算
1.calc
是一个很好的工具,非常适合做不同设备的适配。使用时需要注意运算符中间需要有空格符,不然没有效果。
小程序使用map
组件
latitude
和longtitude
未设置初始值,使用mapContext.moveToLocation()
方法定位至当前地点。在模拟器显示正确,但是真机有白屏问题。解决方法,在这种情况下调用
wx.getLocation()
方法,获取当前经纬度对latitude
和longtitude
进行赋值即可。
原生组件上的限制
camera
canvas
-
input
(仅在focus时表现为原生组件) live-player
live-pusher
map
textarea
video
由于原生组件脱离在 WebView 渲染流程外,因此在使用时有以下限制:
原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index
为多少,都无法盖在原生组件上。
部分CSS样式无法应用于原生组件,例如:
无法对原生组件设置 CSS 动画
无法定义原生组件为 position: fixed
不能在父级节点使用 overflow: hidden 来裁剪原生组件的显示区域
在工具上,原生组件是用web组件模拟的,因此很多情况并不能很好的还原真机的表现,建议开发者在使用到原生组件时尽量在真机上进行调试。
遇到的最大的问题是无法在原生组件上绘制动画,gif动画也不行。(年会游戏小程序)在使用时要多加注意。
模板消息
- 模板下发条件:用户本人在微信体系内与页面有交互行为后触发
- 模板推送位置:服务通知
- 模板跳转能力:点击查看详情仅能跳转下发模板的该帐号的各个页面
实现步骤:
- 通过微信公众平台配置模板。
- 平台通过模板ID下发通知。