腾讯小程序还是很屌的,最近一波小游戏把小程序推到了风口,我司也抓住机会想来试一试水。于是我开发了一个红包小程序,从学习架构语法接口到最后完成第一版,用时一个月。遇到了无数的坎坷,无数摇头叹气想骂人。所以,现在把这一路的经验坎坷写下来以备他人不时之需。

一,开发前准备

1,域名,服务器,证书,开发工具。

小程序开发必须是https请求,所以我们申请域名后需要申请一个证书,腾讯云和阿里云都有免费证书申请,一般这种免费证书都是Symantec下的免费DV SSL证书。将域名与证书绑定后配置在nginx中(腾讯云只需审核域名即可,系统会自动配置https)
         服务器选择推荐腾讯云,腾讯云推出了一套小程序的专用Wafer解决方案,搭建方便易扩展。如果是阿里云或其他云服务,则需要自己手动搭建服务了,我用的是 centos7+nginx+tomcat7+java7
        开发工具自己去https://mp.weixin.qq.com/cgi-bin/wx下载。

2,小程序注册注意事项

小程序分为很多行业类别,在开发自己的小程序时需要想选对行业类别。因为行业类别直接关系到以后小程序结算日期以及其他API使用限制。 我在开发红包小程序时没注意行业类别,导致商户结算日期是T+7,因为结算日太长直接影响小程序的提现功能。

二,小程序开发中的坑

1,登陆。小程序请求后台是要先登录的。通过微信本地调用wx.login生成一个code,然后将code传到后台通过微信接口用code获取openID与session_key还有unionid。openID为微信返回的用户唯一标识。session_key为会话密匙,unionid为用户在开放平台的唯一标识。在调用微信的其它服务与用户进行交互时需要openID,比如提现和退款操作。提现时需要给出用户的OpenID进行提现或者退款。

2,请求微信接口。以支付为例,请求参数需要:appid(小程序ID,在小程序后台设置中获取),AppSecret(小程序密匙,在小程序后台获取),以及其他参数。微信下单接口是XML格式的数据,所以要把请求数据拼接成XML类型数据(XML格式在文档中有明确展示),然后将数据拼接成String用支付商户密匙进行签名放进XML中一同传输给微信。这里有个坑要提一下:“ 微信支付的金额是以‘分’为单位!!!如果你是以元为单位,那么你需要计算成‘分’进行传输,否则就会提示你金额错误!!!”

3,微信语音识别。在某些时候我们需要用户微信提供的录音接口,比如语音识别。微信的语音是silk V3格式的,但是在开发过程中我遇到了一个当时让我想哭的大坑。因为微信小程序的开发工具在录音后会对录音文件进行base64编码,编码后的语音文件是没法进行识别的。我开始没有注意语音文件是否被加密,于是满世界找方案,最后在一篇文章的留言中看到了一哥们儿说“ 微信开发工具的语音是base64加密的,但在真机中会变成正常的silk语音文件”,这才恍然大悟,赶紧回去查验,果然跟他说的一模一样。于是在真机测试中我获取了正确的silk语音文件,但是这时候的语音文件还不能进行识别,因为所有的语音识别接口无论讯飞还是百度还是其他,都只支持“pcm,wav,mp3”之类的语音文件。于是我他妈又陷入沉思, 后来在GitHub中找到了一个解决方案silk-v3-decoder:https://github.com/kn007/silk-v3-decoder。使用这个工具前提是需要 依赖gcc与ffmpeg,安装这两个组件真的是非常非常非常的花时间,安装方法基本可以百度,这里不再赘述。最后的流程是:“小程序客户端调用微信语音接口录音”——“服务器接受silk语音文件”——“程序中调用silk-v3-decoder的sh脚本将语音转码为wav格式”——“传输给百度语音识别接口”——“完成语音识别返回结果”。最后说一下几种格式的语音识别率,经测试,pcm格式的识别率是最高的。

4,微信地图。很多时候我们需要用到地图组件,微信提供了这个东西。但是当我是直接使用时发现了一些问题。首先地图不能自适应屏幕,那么需要通过wx.getSysteminfo来获取屏幕高度然后让地图适配。其次,微信地图不能自定义标记的冒泡图片,比如说当我定位了某个人的位置,我只能使用本地图片对其进行展示或提示,无法用网络图片来展示这个人的头像。并且当你想制作一个工具条来扩展界面的时候,麻烦来了。 因为地图是原生组件,所以原生组件是永远置顶的,当你用微信小程序的<view>之类的标签制作工具条时永远会被地图挡住。但是好在微信提供了另两个标签:“<cover-view>与<cover-image>”,这个标签能让你的工具条显示在最上层。但是麻烦就是只有“cover-view与cover-image”这两个标签能展示在最上层,所以极大影响了UI设计。另外提一句:“虽然小程序对HTML语言支持较好,但是还是有很多不兼容, 比如z-index”在微信小程序中是无效的!”

5,扩展icon图标。坦率的讲,微信提供的那几个土了吧唧的icon真是没法看。所以我们准备扩展一波。但是如果按照HTML的套路引入css那是不可能的,需要转化一下才能使用。我这里以“阿里巴巴矢量图标库”为例,地址见:http://iconfont.cn/collections/detail?cid=599。首先在这里选择一套图标加入到我的项目中,并下载下来,找到ttf格式文件。然后到这个平台https://transfonter.org/,把字体文件转化成base64格式,最后在微信小程序wxss样式文件中引入即可。

三,小程序开发工具以及测试

小程序的开发工具和真机测试在样式上是有一定差距的。比如说页面的左右滑动以及下拉。在开发工具中如果没有设置下拉监听是不会有下拉的,但是在真机中会出现下拉的动作,并且回弹前有空白。其次在设置padding这个样式的时候会出现横向滑动条,这个滑动条在开发工具中不会显示,但在真机中会出现左右滑动,这他妈是十分令人头疼的。所以当你在开发工具中写好的样式时必须要在真机中预览一下,看看是否有什么样式不对。
        在你没有搭建好https服务器的时候,小程序是不能请求到服务器的。本地服务器请求前需要在开发工具的页面的右上角点击“详情”页中的最下面勾选“不校验安全域名”。最后当你https服务器搭建好之后,需要重新编译一下小程序才能请求到https服务器。当你需要进行多款机器测试的时候,在开发工具的顶部点击“测试”按钮提交测试,测试完的报告会显示在测试结果页面。
    最后在小程序开发完一个版本后在顶部“上传”按钮上传代码。然后进入小程序管理后台提交审核。审核时间在1-3天左右,视腾讯爸爸的效率而定。
最后送上一首ACDC的歌结束手记1.0版本《highway to hell》。燥起来!

微信小程序开发手记1.0相关推荐

  1. 微信小程序开发【从0到1~入门篇】

    目录 1. 微信小程序介绍 1.1 什么是小程序? 1.2  小程序可以干什么? 2. 申请账号 2.1 申请帐号 2.2 测试号申请(我们小程序账号申请完成之后,建议务必要申请一个测试号用来开发) ...

  2. 华为云物联网平台微信小程序开发教程2.0【完整详细教程】

    一.简介   在之前曾发布过一篇文章"华为云物联网平台的微信小程序开发",在最近接到部分用户私信在使用开发过程中出现的问题,例如API访问的"401"现象等问题 ...

  3. 微信小程序开发手记之七:一个小程序上线后的总结(上)

    终于,经过大概一周时间,磕磕绊绊地提交审核了,一个移动猿开发小程序,也算有了些心得,也遇到了些坑,这里和大家一起分享下. 怎么样调布局 先说一个题外话,最后引入正题. 如果翻看过一些资料,大家肯定很容 ...

  4. 微信小程序开发手记之三:backgroud和border属性

    先来看一段样式,在wxss中 page{background-color: cadetblue;background-image: url(../../../image/weixin_logo.png ...

  5. 微信小程序开发导航:精品教程+网友观点+demo源码(5月9日更新)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  6. 微信小程序开发优秀教程及文章合集第一期

    2019独角兽企业重金招聘Python工程师标准>>> 我会不定期的选取一些优质教程,整理成辑,以便大家集中阅读: 新手向!微信小程序开发手记系列: 微信小程序开发手记<一&g ...

  7. 【微信小程序开发全流程】篇章0:基于JavaScript开发的校园综合类微信小程序的概览

    基于JavaScript开发的校园综合类微信小程序的概览 本文仅供学习,未经同意请勿转载 一些说明:上述项目来源于笔者我本科大三阶段2020年电子设计课程项目,在这个项目中,我主要是负责的部分有前端, ...

  8. 微信小程序开发之选项卡

    选项卡是web开发中经常使用到的一个模块,在小程序中竟然没有,这里参考别人的文章自己做了一个双选项卡 实现思路: 通过绑定swichNav事件来控制currentTab(当前选项卡)和isShow(是 ...

  9. 微信小程序开发简易计算器改进版

    微信小程序开发计算器有多种方法,但是大部分代码比较复杂.不容易理解.本案例进行了改进,主要是组件bindtap属性绑定的自定义函数clickBtn(),采用了switch语句,使得代码结构更加清晰,学 ...

最新文章

  1. javaweb设置servlet
  2. 《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL
  3. 镇海区工业机器人与自动化设备_工业机器人和工业自动化设备的区别
  4. 2018蓝桥杯省赛---java---C---8(等腰三角形)
  5. ofo 押金被强制理财?黄章回应 OPPO 涉嫌抄袭;三星华为折叠手机重名 | 极客头条...
  6. 加入karia2开源项目
  7. 使用yum安装Apache+PHP+MySQL
  8. SQLSERVER中判断表中的某列是否存在两个方法
  9. WIN10 PDF不显示缩略图 解决办法(修复工具下载)
  10. 嵌入式的c语言,嵌入式c语言
  11. c语言格式字符二进制,C语言printf如何输出二进制数格式?将十进制数转为二进制输出...
  12. 代码审计| HDWiki 漏洞(一)
  13. 基于python+openCV的中值滤波
  14. C语言利用图的邻接矩阵的存储方式实现拓扑排序
  15. html鼠标移入显示图片动画,HTML5+CSS3鼠标移入移出图片生成随机动画_html/css_WEB-ITnose...
  16. Delphi 2005 失望的尝鲜!
  17. ble zephyr lbs样例,一上电进入广播状态,发送的HCI命令
  18. Retinanet网络结构简介
  19. 汇编语言 从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果
  20. UI设计要学习哪些软件

热门文章

  1. 软件测试—十二章测试层次
  2. linux上centos镜像磁盘,VirtualBox中配置linuxCentOS的本地磁盘镜像iso作为其软件源
  3. [Java FX 2] Stage with rounded corners and background image
  4. Xmind2021安装激活破解
  5. 小程序开发用什么编程语言_微信小程序开发教程是什么?费用多少?
  6. 字节面试杂谈——操作系统
  7. 不懂风水没关系,照做就一定没错!好玩实用的室内风水忌避图
  8. 100项目插件激活程序验证码,自行复制
  9. 跨境电商一件代发和专线小包是什么意思?有什么区别?
  10. 人人都能懂的贝叶斯统计:原理与实践