小程序开发中6个隐蔽的坑

引言

说到小程序,大家都不会陌生。这是BAT多家企业都在布局的赛道,腾讯有微信小程序,阿里有支付宝小程序(实际上阿里生态的多家企业都在做小程序), 百度有百度小程序。三大巨头都声称将投入数十亿扶持小程序开发者。其中微信小程序是最成熟的,也是起步最早,开发者人数最多, 小程序数量最大的一个平台。有了小程序, 微信不在仅仅是一个app,而是一个操作系统,暂且称之为微信OS吧。这是每个开发者都不愿错过的风口,当然我们也不愿错过。小程序是非常适合做MVP项目(最小可行化产品)的, 因为它足够轻量级,而且扎根微信平台,可以获得不少的免费而巨大的用户流量, 因此我们从一开始就选择小程序作为我们的产品形态。

这篇文章主要是介绍我们在微信小程序上踩过的一些比较典型的坑和一些避坑小技巧, 希望给大家一些参考,从而节省产品开发和上线的时间。这篇文章主要面向的是有一定小程序开发经验的读者。

小程序canvas保存图片问题

问题表现:用canvas动态生成一张图片(包含用户头像、小程序码),然后让用户保存图片到相册,继而分享图片到朋友圈。这时出现系统繁忙,没有办法生成图片海报。而且在小程序调试工具不会出现问题, android手机不会出现问题, ios会出现该问题。

分析与解决方案:翻遍文档,查了google。研究下canvas保存图片的原理大致是canvas要把图片放在画布上面,不能使用网络图片,因此需要利用downloadFile这个Api把图片缓存到本地。而downloadFile是受到安全域名限制的,所以需要在小程序后台将图片链接的域名,包括微信头像的域名wx.qlogo.cn加入到安全域名中。

Formid问题

问题表现:微信小程序发送模板消息出现41028,invalid form id hint, 新产生的formid依然无法正常使用,android的可以,而ios的总是失败。

分析和解决方案:为了能给用户发送消息通知,需要在小程序埋表单,在用户点击某个按钮时获取formid并传到后端保存。经过分析发现数据库的长度是16位, 而安卓端产生的formID 是这样的13位例如:1532424185780, ios端产生的是32位:5f51e0ba44ad3103dc359893571835a7。 ios产生的formid超过数据库的字段长度,会在存储到数据库时自动被截取前16位 ,因此发送的formid就变成无效formid了。解决方案是延长数据库字段的长度到32位。

模板通知跳转问题

问题表现:在生产做测试时点击小程序的模板通知,发现跳转了体验版的页面.

分析与解决方案:后来查看了微信小程序的文档,发现小程序模板消息的跳转逻辑如下:formid是开发版获取的,就跳开发版;formid是体验版获取的,就跳体验版;formid是发布版获取的,就跳发布版。删除对应用户获取到的formid, 让用户重新获取formid即可。

二维码跳转问题

对于调用微信接口生成的二维码, 扫描二维码会直接跳转至正式版小程序,不会跳转至体验版,调试的时候要注意。

H5链接参数丢失问题

问题表现:webview打开h5链接时都不是想要的网站页面。也就是说在直接复制链接在手机浏览器或者微信浏览器打开都没有问题,但是在小程序嵌入链接打开就不是指定的页面。

分析与解决方案: 通过抓包分析(推荐工具whistle), 发现了h5链接参数发生丢失, 比如原链接是https://example.com?host=xxxx, 在微信小程序里打开就变成https://example.com. 解决方案是先encodeURIComponent(url) 后在webview页面decodeURIComponent(url )。

 

审核问题

 审核不通过提示”涉及平台未允许的内容:诱导分享朋友圈 “, 可以尝试修改下文案再提交,比如说”分享到朋友圈” 修改为<。。。。>。

这里说明一下, 微信小程序有一套审核机制,实现上感觉像是机器审核+人工审核。上线之前要提交审核,只有审核成功的小程序才能正常发布。微信对诱导分享的行为有所限制,但是目测修改文案也可以能通过审核。当然不敢保证完全成功。

添加微信免费咨询小程序配置选择建议
微信号:landuiYY

未经允许不得转载:云技术 » 小程序开发中6个隐蔽的坑

赞 (0)