小程序开发(1)


<h5 id="1">小程序注册<h5>

注册地址:https://mp.weixin.qq.com/
一般小程序的注册主体是企业,政府,媒体,其他,但是不包含个人.所以如果想要个人开发的话, 找个分享群, 说不定别人给你一个测试的名额

<h5 id="2">小程序API</h5>

最重要的其实就是完整的看一遍小程序的开发规范和api, 很多问题其实都在文档中有一些标注和说明.
文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html

<h5 id="3">下载开发工具</h5>

地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=201715
此页面同时也是更新日志的发布点.

<h5 id="4">未注册如何开发</h5>

微信开发工具的说明是:
开发者需要使用已在后台绑定成功的微信号扫描二维码登录
但是如果没有注册过的,可能就真的不能使用微信的工具了. 但是可以回归原始的变成方式, 直接使用txt..或者可以加一些小程序开发的群,有些会有共享的.

<h5 id="5">域名/证书问题</h5>

一般遇到的情景是开发工具和ios中能够获取到数据,但是android不行, 大部分的原因就是网站证书设置的问题. 不论是ssl还是tsl, 小白搞不明白, 可以简单的几个步骤检查.

  1. chrome打开网址[没有chrome的自己下载].
  2. 点击网址左侧的绿色锁, 弹出窗口, 点击 详细信息.
  3. 底部弹出窗口. 找到类似ssl,tsl字样.


  4. 说明是支持到1.2的. 微信api中有说明, 最好是1.2版本,并且支持1.0,1.1旧版本.
  5. 如果网址上查看是1.2 ,问题没有解决, 只能查看网络服务器的配置了.找网络

<h5 id="6">小程序如何获取用户信息,openid,unionid</h5>

一般获取用户信息,就是头像之类的, 如果要做自己的用户系统那么就需要用户的openid.

//app.js
App({
  onLaunch: function() {
    wx.login({
      success: function(res) {
        if (res.code) {
          //发起网络请求
          wx.request({
            url: '你的域名api',
            data: {
              code: res.code/* code用来交换得到用户openid的 */
            }
          })
        } else {
          console.log('获取用户登录态失败!' + res.errMsg)
        }
      }
    });
  }
})

后台部分伪代码

// 1. 得到前台传递的code
String code = getParam("code");
// 2. 调用微信接口(WX_LOGIN_URL=https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code), 需要替换一下appid等, JSCODE就是获取到的code
String url = WX_LOGIN_URL.replace("APPID", '小程序的appid').replace("SECRET", '小程序的AppSecret,注意保管,微信是不会保存的').replace("JSCODE", code);
// 3. 调用接口
JSONObject json = HttpPostUtils.sendForm(url);
// 4. 得到返回值
String session_key = json.getString("session_key");
String openid = json.getString("openid");

如果要校验用户是否正确啊之类的还需要校验签名, signature;

  1. 校验签名
  2. 获取用户unionid, 要获取unionid,必须在开发者平台绑定小程序, 如果绑定了其他公众号, 可以共用用户信息.
wx.getUserInfo({
          success: function (userData) {
            wx.request({
              url: '你的api',
              data: {
                  code:loginData.code,/** code */
                  rawData: encodeURI(userData.rawData),/** 未加密用户数据 */
                  signature: userData.signature,/**签名 */
                  encryptedData:userData.encryptedData,/**加密之后的用户数据 */
                  iv:userData.iv /** 加密算法向量 */
              },
              method: 'POST',
              success: function(res){
                /* 服务器返回 */
            }
          })
        }
      })

所需要的openid和unionid其实就藏在encryptedData中.
如何解密? 网上一大堆.

<h5 id="7">开发遇到的问题</h5>

  • 小程序的布局
    推荐使用flex. 网上百度一下, 很多flex教程, 也有一些插件. 这里我偷懒贴一个:
    http://coffcer.github.io/flex-layout/#
  • 数据传递
    小程序分为显示层wxml,数据层js, 数据要在xml中展示, 必须使用this.setData({}),其他的都是伪科学.
  • 小程序不支持删除布局, 也就是说只能增加结构,最多是隐藏, 不会删除.
  • 证书没毛病,工具和ios都可以解析返回的数据, 但是android不行.
    解析返回值, 转化为json结构,
if(typeof (data) == 'string'){
data = JSON.parse(xx)
};
  • 小程序支持animate.
  • 目前2017.01.10为止,android中的textarea还是有问题.多行输入的时候使用form提交, 由于textarea的层级比button的高所以不能点中button,虽然微信开放了键盘的完成按钮, 点击完成后,会提交数据.
    变通方法, 是bindinput方法监控输入, 但是这样一来就不能获取formId, 也就不能发送外部消息了.不过一般场景可能也用不到这个..
  • 重复的结构,最好提取为单独的wxml,然后引用.
  • formId只有真机下才有.
  • 不能动态变更样式, 所以设置css, 只能将style当成参数传递.
  • scroll-view中滚动, 不会触发onPullDownRefresh
  • 跳转的页面是tabbar时,一定要用wx.switchTab, wx.navigateTo不能跳转到被设置为tabbar的页面
  • json是否包含某字段:data.hasOwnProperty('id')
  • 数组添加数据list.push(xxx), 删除可以用Array.splice()
  • wx.request全部都是异步调用, 没有阻塞方法,不过可以使用一个超长的toast.
wx.showToast({
  title: '成功',
  icon: 'success',
  duration: 20000000000/*😁*/
})
// 取到值了.
setTimeout(function(){
  wx.hideToast()
},300)
  • wx.request,调用接口, 后台收不到数据.仔细阅读接口说明..

<h5 id="8">其他</h5>

一些小插件:
小程序内部通知插件,https://weappdev.com/t/wxnotificationcenter/233/4

更多资料访问:https://weappdev.com/
这个真心是免费帮别人推广了.\(o)/~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,719评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,337评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,887评论 0 324
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,488评论 1 266
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,313评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,284评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,672评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,346评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,644评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,700评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,457评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,316评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,706评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,261评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,648评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,859评论 2 335

推荐阅读更多精彩内容