小程序開發(fā)(1)


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

注冊地址:https://mp.weixin.qq.com/
一般小程序的注冊主體是企業(yè),政府,媒體,其他,但是不包含個人.所以如果想要個人開發(fā)的話, 找個分享群, 說不定別人給你一個測試的名額

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

最重要的其實就是完整的看一遍小程序的開發(fā)規(guī)范和api, 很多問題其實都在文檔中有一些標(biāo)注和說明.
文檔地址:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html

<h5 id="3">下載開發(fā)工具</h5>

地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=201715
此頁面同時也是更新日志的發(fā)布點.

<h5 id="4">未注冊如何開發(fā)</h5>

微信開發(fā)工具的說明是:
開發(fā)者需要使用已在后臺綁定成功的微信號掃描二維碼登錄
但是如果沒有注冊過的,可能就真的不能使用微信的工具了. 但是可以回歸原始的變成方式, 直接使用txt..或者可以加一些小程序開發(fā)的群,有些會有共享的.

<h5 id="5">域名/證書問題</h5>

一般遇到的情景是開發(fā)工具和ios中能夠獲取到數(shù)據(jù),但是android不行, 大部分的原因就是網(wǎng)站證書設(shè)置的問題. 不論是ssl還是tsl, 小白搞不明白, 可以簡單的幾個步驟檢查.

  1. chrome打開網(wǎng)址[沒有chrome的自己下載].
  2. 點擊網(wǎng)址左側(cè)的綠色鎖, 彈出窗口, 點擊 詳細(xì)信息.
  3. 底部彈出窗口. 找到類似ssl,tsl字樣.


  4. 說明是支持到1.2的. 微信api中有說明, 最好是1.2版本,并且支持1.0,1.1舊版本.
  5. 如果網(wǎng)址上查看是1.2 ,問題沒有解決, 只能查看網(wǎng)絡(luò)服務(wù)器的配置了.找網(wǎng)絡(luò)

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

一般獲取用戶信息,就是頭像之類的, 如果要做自己的用戶系統(tǒng)那么就需要用戶的openid.

//app.js
App({
  onLaunch: function() {
    wx.login({
      success: function(res) {
        if (res.code) {
          //發(fā)起網(wǎng)絡(luò)請求
          wx.request({
            url: '你的域名api',
            data: {
              code: res.code/* code用來交換得到用戶openid的 */
            }
          })
        } else {
          console.log('獲取用戶登錄態(tài)失斈幼丁!' + res.errMsg)
        }
      }
    });
  }
})

后臺部分偽代碼

// 1. 得到前臺傳遞的code
String code = getParam("code");
// 2. 調(diào)用微信接口(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. 調(diào)用接口
JSONObject json = HttpPostUtils.sendForm(url);
// 4. 得到返回值
String session_key = json.getString("session_key");
String openid = json.getString("openid");

如果要校驗用戶是否正確啊之類的還需要校驗簽名, signature;

  1. 校驗簽名
  2. 獲取用戶unionid, 要獲取unionid,必須在開發(fā)者平臺綁定小程序, 如果綁定了其他公眾號, 可以共用用戶信息.
wx.getUserInfo({
          success: function (userData) {
            wx.request({
              url: '你的api',
              data: {
                  code:loginData.code,/** code */
                  rawData: encodeURI(userData.rawData),/** 未加密用戶數(shù)據(jù) */
                  signature: userData.signature,/**簽名 */
                  encryptedData:userData.encryptedData,/**加密之后的用戶數(shù)據(jù) */
                  iv:userData.iv /** 加密算法向量 */
              },
              method: 'POST',
              success: function(res){
                /* 服務(wù)器返回 */
            }
          })
        }
      })

所需要的openid和unionid其實就藏在encryptedData中.
如何解密? 網(wǎng)上一大堆.

<h5 id="7">開發(fā)遇到的問題</h5>

  • 小程序的布局
    推薦使用flex. 網(wǎng)上百度一下, 很多flex教程, 也有一些插件. 這里我偷懶貼一個:
    http://coffcer.github.io/flex-layout/#
  • 數(shù)據(jù)傳遞
    小程序分為顯示層wxml,數(shù)據(jù)層js, 數(shù)據(jù)要在xml中展示, 必須使用this.setData({}),其他的都是偽科學(xué).
  • 小程序不支持刪除布局, 也就是說只能增加結(jié)構(gòu),最多是隱藏, 不會刪除.
  • 證書沒毛病,工具和ios都可以解析返回的數(shù)據(jù), 但是android不行.
    解析返回值, 轉(zhuǎn)化為json結(jié)構(gòu),
if(typeof (data) == 'string'){
data = JSON.parse(xx)
};
  • 小程序支持animate.
  • 目前2017.01.10為止,android中的textarea還是有問題.多行輸入的時候使用form提交, 由于textarea的層級比button的高所以不能點中button,雖然微信開放了鍵盤的完成按鈕, 點擊完成后,會提交數(shù)據(jù).
    變通方法, 是bindinput方法監(jiān)控輸入, 但是這樣一來就不能獲取formId, 也就不能發(fā)送外部消息了.不過一般場景可能也用不到這個..
  • 重復(fù)的結(jié)構(gòu),最好提取為單獨的wxml,然后引用.
  • formId只有真機下才有.
  • 不能動態(tài)變更樣式, 所以設(shè)置css, 只能將style當(dāng)成參數(shù)傳遞.
  • scroll-view中滾動, 不會觸發(fā)onPullDownRefresh
  • 跳轉(zhuǎn)的頁面是tabbar時,一定要用wx.switchTab, wx.navigateTo不能跳轉(zhuǎn)到被設(shè)置為tabbar的頁面
  • json是否包含某字段:data.hasOwnProperty('id')
  • 數(shù)組添加數(shù)據(jù)list.push(xxx), 刪除可以用Array.splice()
  • wx.request全部都是異步調(diào)用, 沒有阻塞方法,不過可以使用一個超長的toast.
wx.showToast({
  title: '成功',
  icon: 'success',
  duration: 20000000000/*??*/
})
// 取到值了.
setTimeout(function(){
  wx.hideToast()
},300)
  • wx.request,調(diào)用接口, 后臺收不到數(shù)據(jù).仔細(xì)閱讀接口說明..

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

一些小插件:
小程序內(nèi)部通知插件,https://weappdev.com/t/wxnotificationcenter/233/4

更多資料訪問:https://weappdev.com/
這個真心是免費幫別人推廣了.\(o)/~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侨赡,一起剝皮案震驚了整個濱河市蓖租,隨后出現(xiàn)的幾起案子粱侣,更是在濱河造成了極大的恐慌,老刑警劉巖蓖宦,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齐婴,死亡現(xiàn)場離奇詭異,居然都是意外死亡球昨,警方通過查閱死者的電腦和手機尔店,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來主慰,“玉大人嚣州,你說我怎么就攤上這事」猜荩” “怎么了该肴?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長藐不。 經(jīng)常有香客問我匀哄,道長,這世上最難降的妖魔是什么雏蛮? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任涎嚼,我火速辦了婚禮,結(jié)果婚禮上挑秉,老公的妹妹穿的比我還像新娘法梯。我一直安慰自己,他們只是感情好犀概,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布立哑。 她就那樣靜靜地躺著,像睡著了一般姻灶。 火紅的嫁衣襯著肌膚如雪铛绰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天产喉,我揣著相機與錄音捂掰,去河邊找鬼。 笑死曾沈,一個胖子當(dāng)著我的面吹牛这嚣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晦譬,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼疤苹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了敛腌?” 一聲冷哼從身側(cè)響起卧土,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤惫皱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后尤莺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旅敷,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年颤霎,在試婚紗的時候發(fā)現(xiàn)自己被綠了媳谁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡友酱,死狀恐怖晴音,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缔杉,我是刑警寧澤锤躁,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站或详,受9級特大地震影響系羞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霸琴,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一椒振、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梧乘,春花似錦澎迎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辑莫。三九已至学歧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間各吨,已是汗流浹背枝笨。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揭蜒,地道東北人横浑。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像屉更,于是被迫代替她去往敵國和親徙融。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容